gpt4 book ai didi

java - JPA "cannot be cast to java.sql.Blob"

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:01:47 25 4
gpt4 key购买 nike

我在 hibernate 3.6.1 中使用 JPA2。和 Derby 数据库,我对 blob 使用了以下注释:

@Column(length = Integer.MAX_VALUE)
@Lob
long[] bucket;

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

java.lang.ClassCastException: [J cannot be cast to java.sql.Blob

我为什么以及如何使它起作用?

如果我在没有 @Lob 的情况下对其进行注释,我会得到一个“Varchar for bit data”列,该列最多只能包含 32m。

最佳答案

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

documentation

@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.

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

关于java - JPA "cannot be cast to java.sql.Blob",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5222218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com