- 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/
我有一个接受CommonsMultipartFile并将其上传到服务器的服务方法 class ExampleService() { def saveFile(CommonsMultipartF
我正在尝试开发一个应用程序,用户将从屏幕上传文件,该文件将在服务器端进行处理。我正在使用 Adobe Flex 的 UI,Spring 3.2 作为中间件和 Java 5。我可以成功上传文件并在服
我正在为我的应用程序创建 API。在基于 GUI 浏览器的应用程序中,文件通过表单提交上传。所以我只是执行 CommonsMultipartFile file = request.getFile(my
大家, 我正在使用 Grails 中的 spock 测试某些需要 CommonMultipartFile 作为输入参数的方法。 我的问题是如何创建这些文件,以便不生成本地文件。其中一些必须使用 req
我正在尝试使用 JPA 将上传的文件保存到数据库。 (对我来说)最“自然”的方式是将域对象定义为: @Entity class UploadFile { ... public CommonsM
我有一个将 CommonsMultipartFile 对象作为参数的 junit 测试方法。 我正在尝试创建一个 FileItem 对象,以便将其传递给构造函数, CommonsMultipartFi
我的 Spring Boot 应用程序中有以下部分代码: base64str 变量具有编码 Base 64 图像, byte[] data = Base64.decode(base64str); 但我
我正在尝试使用 MultipartFile 发出 POST 请求。首先,我想将文件转换为 MultipartFile: File file = new File(filePath); DiskFile
我有一个像这样的 CommonsMultipartFile 类型字段的 bean: public class Placement implements Serializable { private s
我无法读取我在 Grails 中上传的文件。 write 是数据库中我存储上传文件的列。 CommonsMultipartFile testFile = request.getFile('templa
我正在尝试使用一个在请求中接受 CommonsMultipartFile 的 Web 服务。因此,我使用 Spring 的 RestTemplate 创建了一个 HTTP 客户端。下面的方法接受 UR
我正在尝试使用推土机从 CommonsMultipartFile 映射到 byte[]。 我知道我需要一个 customConverter 因为 dozer 对 CommonsMultipartFil
我正在使用 Spring-MVC 3.0,在我的应用程序中,我发送了一些带有多个附件的信息,每个文件都有标题、Id 等。所以,我制作了一个 DTO,如下所示 public class MyDTO {
我有一个表单对象,它由 Spring 自动正确填充。在这个表单对象中,我有一个字段: CommonsMultipartFile file; 用户可以上传文件,并且表单对象正确包含该文件。一切都很好。但
在我的公司,出于额外原因,我需要将 MIME 类型与文件扩展名进行比较。我有一个 CommonsMultipartFile。我试图找出进行这种比较的最佳方法。我看到了 MimetypesFileTyp
我正在尝试使用 javascript 的 XMLHttpRequest 对象上传图像,但 Spring 一直抛出 NoSuchMethodException。异常情况如下: java.lang.NoS
我正在使用 spring 3.0 org.springframework.web.multipart.commons.CommonsMultipartFile 进行文件上传。我想写下使用 Mockit
我不知道该怎么做附件。已安装插件“邮件”,相关文件是从表单上载(成功)的.csv文件。 这有效: def f = request.getFile('uploadedFile') //do a bunc
我正在一个屏幕上工作,它将文件作为 BFILE 类型上传到 oracle 表。我正在使用 spring3 和 hibernate3。 BO 类如下所示: @Entity @Table(name="ab
它有效: 查看(普惠制): Controller : def destination = "D:\\someFolder\\image.jpg"; def f = reques
我是一名优秀的程序员,十分优秀!