JPA“无法转换为 java.sql.Blob”

发布于 2024-10-20 20:07:26 字数 387 浏览 3 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

却一份温柔 2024-10-27 20:07:27

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

文档

@Lob 表示该属性
应该保存在 Blob 或 a 中
Clob 取决于属性类型:
java.sql.Clob、Character[]、char[] 和
java.lang.String 将被持久化
一个 Clob。 java.sql.Blob、字节[]、字节[]
可序列化类型将是
持久保存在 Blob 中。

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

如果要保留数组,则需要构建自定义用户类型来转换数据类型。您可以在此处找到示例 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

@Lob indicates that the property
should be persisted in a Blob or a
Clob depending on the property type:
java.sql.Clob, Character[], char[] and
java.lang.String will be persisted in
a Clob. java.sql.Blob, Byte[], byte[]
and serializable type will be
persisted in a Blob.

If the property type implements
java.io.Serializable and is not a
basic type, and if the property is not
annotated with @Lob, then the
Hibernate serializable type is used.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文