[英]Can not set [B field fr.mypackage.MyClass.data to java.lang.String
我正在努力解決這個問題:
org.hibernate.PropertyAccessException:無法通過 fr.mypackage.MyClass.data 的反射設置器設置字段值
引起:java.lang.IllegalArgumentException:無法將[B字段fr.mypackage.MyClass.data設置為java.lang.String
上面的問題是關於 MyClass 的,它是一個具有兩個屬性的實體:
@Entity
@Table(name = "TG_CLASS")
public class MyClass {
@Id
@Column(name = "ID")
private long id;
@Lob
@Type(type = "org.hibernate.type.TextType")
@Column(name = "DATA")
private byte[] data;
...
}
它看起來很簡單,唯一棘手的是 DATA 列,它是一個字節(我在 PostgreSQL 中工作),問題來自 Hibernate 努力將字節轉換為字符串。 我該如何解決這個問題?
如果您正在使用BYTEA
列並且您的實體有一個byte[]
,則不應使用org.hibernate.type.TextType
。 它用於 c(haracter)lobs,您使用的是字節而不是字符。
此外,有許多方法可以將字節轉換為字符,反之亦然,這些方法稱為編碼。 我不會相信我不知道正在使用哪種編碼的靜默轉換。 您最終可能會在不知不覺中得到損壞的數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.