簡體   English   中英

無法將 [B 字段 fr.mypackage.MyClass.data 設置為 java.lang.String

[英]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.

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