簡體   English   中英

Hibernate不承認持久的getter / setter屬性

[英]Hibernate does not acknowledge persistent getter/setter property

我的實體類中有這個屬性:

@Column(name="avatar",nullable=false,length=1000)
String getAvatarData() {
    return new JSONObject(avatar.export()).toString();
}
void setAvatarData(String data) {
    avatar = Avatar.restore(new JSONObject(data).toMap());
}

Hibernate根本不處理它。 至少,它不包含在它生成的模式中。

@Access(AccessType.PROPERTY)

在你的實體上。 這是JPA 2.0。 對於1.0,使用org.hibernate.AccessType

@AccessType("property")

順便說一句,我寧願有一個帶有getter和setter的簡單字段,而是注釋該字段。 然后,如果您想要自定義轉換,請添加其他方法,例如getFooAsJSON

澄清Bozho的答案:在JPA 2.0(Hibernate 3.5及更高版本)中,您聲明一個具有屬性訪問權限的字段,如下所示:

@Access(AccessType.FIELD)
public class Foo {
    ...
    @Access(AccessType.PROPERTY)
    @Column(name="avatar",nullable=false,length=1000) 
    String getAvatarData() { ... }

    void setAvatarData(String data) { ... }
}

在以前版本的Hibernate中 - 如下所示(注意注釋仍然放在字段上):

@Access("field")
public class Foo {
    ...
    @Access("property")
    @Column(name="avatar",nullable=false,length=1000) 
    private Avatar avatarData;

    String getAvatarData() { ... }
    void setAvatarData(String data) { ... } 
    ...
}

暫無
暫無

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

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