- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在一个屏幕上工作,它将文件作为 BFILE 类型上传到 oracle 表。我正在使用 spring3 和 hibernate3。
BO 类如下所示:
@Entity
@Table(name="abc_manuals")
public class ManualBo implements Serializable {
/* Persistent Fields */
@Id
@Column(name="id", nullable=false)
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long mId;
@Column(name="guide")
@Type(type="com.bo.entity.BFILEType")
private BFILE guide;
public Long getMlId() {
return mlId;
}
public void setMId(Long manualId) {
this.mId = mId;
}
public BFILE getGuide() {
return guide;
}
public void setGuide(BFILE guide) {
guide = guide;
}
}
我定义了一个 BFILE userType:
public class BFILEType implements UserType, Serializable {
@SuppressWarnings("unused")
private static final String MARK_EMPTY = "<EmptyString/>";
private static final int[] TYPES = { OracleTypes.BFILE };
public int[] sqlTypes() {
return TYPES;
}
@SuppressWarnings("rawtypes")
public Class returnedClass() {
return BFILE.class;
}
public boolean equals(Object x, Object y) {
if (x==y) return true;
if (x==null || y==null) return false;
return x.equals(y);
}
public Object deepCopy(Object x) {
return x;
}
public boolean isMutable() { return false; }
public Object nullSafeGet(ResultSet rs, String[] names, Object owner) throws
HibernateException, SQLException {
BFILE bfile = (BFILE)rs.getObject(names[0]);
return bfile;
}
public void nullSafeSet(PreparedStatement st, Object value, int index) throws
HibernateException, SQLException {
if(value==null)
st.setObject(index, null);
else
st.setObject(index, value, OracleTypes.BFILE);
}
public Object assemble(Serializable arg0, Object arg1) throws HibernateException {
return deepCopy(arg0);
}
public Serializable disassemble(Object value) {
return (Serializable) deepCopy(value);
}
public int hashCode(Object arg0) throws HibernateException {
return arg0.hashCode();
}
public Object replace(Object arg0, Object arg1, Object arg2) throws
HibernateException {
return deepCopy(arg0);
}
}
问题是当我尝试在 Controller 中设置文件时
manual.setGuide((oracle.sql.BFILE) form.getFile());
它编译得很好,但是当我从屏幕上传文件时,它给出了以下异常
java.lang.ClassCastException:org.springframework.web.multipart.commons。CommonsMultipartFile无法转换为oracle.sql。BFILE
如何解决这个问题?
已解决:
我尝试过:
public void nullSafeSet(PreparedStatement st, 对象值, int 索引) 抛出 HibernateException, SQLException { 如果(值==空){ st.setObject(索引, null); }其他{
OracleConnection oc = (OracleConnection) st.getConnection();
OraclePreparedStatement opst = (OraclePreparedStatement) st;
OracleCallableStatement ocs = (OracleCallableStatement) oc.prepareCall("{? = call BFILENAME('" + directory + "', '"+ filename + "')}");
ocs.registerOutParameter(1, OracleTypes.BFILE);
ocs.execute();
BFILE bfile = ocs.getBFILE(1);
opst.setBFILE(index, bfile);
}
}
并且工作正常。
谢谢!
最佳答案
java.lang.ClassCastException: org.springframework.web.multipart.commons.CommonsMultipartFile cannot be cast to oracle.sql.BFILE
这是正确的,这两个类不共享类型层次结构,无法将一个类强制转换为另一个类。您应该专注于传输内容,而不是转换类型。
这应该是您需要的代码:
BFILE bfile = new BFILE();
bfile.setBytes(form.getFile().getBytes());
manual.setGuide(bfile);
更新:事实证明这并不那么容易,因为 BFILE 不能仅仅被构造出来。这是 Oracle tutorial for working with BFILES in Java .
关于java.lang.ClassCastException : CommonsMultipartFile cannot be cast to oracle. sql.BFILE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7107794/
我有一个java web应用程序需要上传文件,我们希望将这些文件存储在文件系统上而不是数据库中。数据库将仅存储文档元数据。 问题是是否将路径作为字符串存储在 Oracle 中,还是作为 BFILE 定
我有一个 Web 服务,它检查字典以查看文件是否存在,如果存在,则读取文件,否则保存到文件中。这是来自网络应用程序。我想知道执行此操作的最佳方法是什么,因为如果同时访问同一文件,我偶尔会遇到 File
我在使用 jdbc 从 Oracle DB 检索 bfile 对象到 java API 时遇到问题。问题是当我使用数据库中的函数执行Prepared语句时,该函数返回一个bfile字段,该异常会抛出:
我目前正在研究一种将 BFile 从 Java 应用程序写入/读取到 Oracle 数据库的解决方案。我搜索了有关 BFile 操作的信息,似乎唯一的方法是调用远程 pl sql 过程。 我正在使用
我已经使用 Mercurial 的 bfiles 扩展有一段时间了,它工作得很好。唯一的问题是安装和特殊的“hg bfadd”命令。 既然 Mercurial 2.0 包含了我想要切换的大文件扩展名。
我有一个java webapp,它需要通过http上传文件,然后将它们存储在服务器上。这些文件需要与 Oracle 数据库中的特定记录相关联,因此数据库中将有一个表存储对关联记录的引用、对文件的引用以
有一些用于处理大型二进制文件的 mercurial 扩展。 Bfiles BigFiles Snap kbfiles 其他的? 我想使用最有可能是官方的(即随 mercurial 分发)。 Kiln
你能告诉我,为什么这个函数返回一个空的 blob 值吗?它甚至不会在循环后关闭 BFILE 类型变量。我无法想象问题出在哪里。 FUNCTION f$bfile_to_blob (I_FID_ID
我正在一个屏幕上工作,它将文件作为 BFILE 类型上传到 oracle 表。我正在使用 spring3 和 hibernate3。 BO 类如下所示: @Entity @Table(name="ab
我正在尝试从安装在 Linux 服务器上的 Oracle DB 检索图像。我已打开与 Oracle DB 的连接,并编写了以下代码来读取图像文件: String sqlQuery2 = "SELECT
我是一名优秀的程序员,十分优秀!