JPA“无法转换为 java.sql.Blob”
我正在使用 JPA2 和 hibernate 3.6.1。和 Derby 数据库,我对 blob 使用了以下注释:
@Column(length = Integer.MAX_VALUE)
@Lob
long[] bucket;
Hibernate 创建了正确的 blob 列,但如果我尝试保存实体,则会出现以下异常:
java.lang.ClassCastException:[J 无法转换为 java.sql.Blob
为什么以及如何才能使其工作?
如果我在没有 @Lob 的情况下对其进行注释,我会得到一个“Varchar for bit data”列,该列最多只能包含 32m。
I'm using JPA2 with hibernate 3.6.1. and a Derby database and I used the following annotation for a blob:
@Column(length = Integer.MAX_VALUE)
@Lob
long[] bucket;
Hibernate creates the correct blob column but if I try to save an entity I get the following exception:
java.lang.ClassCastException: [J cannot be cast to java.sql.Blob
why and how can I make this work?
If I annotate it without the @Lob I get a "Varchar for bit data" column which can only contain up to 32m.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要将属性映射为 byte[],而不是 long[]。
文档说
如果要保留数组,则需要构建自定义用户类型来转换数据类型。您可以在此处找到示例 http://docs .jboss.org/hibernate/annotations/3.5/reference/en/html/entity.html#d0e2794
You need to map the property as a byte[], not as long[].
The documentation says
If you want to persist the array, you'll need to build a custom user type to transform the data type. You can find an example here http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html/entity.html#d0e2794