簡體   English   中英

JPA“無法轉換為java.sql.Blob”

[英]JPA “cannot be cast to 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。

您需要將屬性映射為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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM