JPA"无法转换为java.sql.Blob"

sui*_*ide 3 java hibernate blob derby jpa-2.0

我正在使用JPA2和hibernate 3.6.1.和Derby数据库,我使用以下注释为blob:

@Column(length = Integer.MAX_VALUE)
@Lob
long[] bucket;
Run Code Online (Sandbox Code Playgroud)

Hibernate创建正确的blob列,但如果我尝试保存实体,则会出现以下异常:

java.lang.ClassCastException:[J无法强制转换为java.sql.Blob

为什么以及如何使这项工作?

如果我在没有@Lob的情况下注释它,我会得到一个"Varchar for bit data"列,最多只能包含32m.

Aug*_*sto 9

您需要将属性映射为byte [],而不是long [].

文件说:

@Lob表示属性应该保存在Blob或Clob中,具体取决于属性类型:java.sql.Clob,Character [],char []和java.lang.String将保存在Clob中.java.sql.Blob,Byte [],byte []和serializable类型将保存在Blob中.

如果属性类型实现java.io.Serializable并且不是基本类型,并且如果该属性未使用@Lob注释,则使用Hibernate可序列化类型.

如果要保留数组,则需要构建自定义用户类型以转换数据类型.你可以在这里找到一个例子http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html/entity.html#d0e2794