Hibernate не подтверждает постоянное свойство getter / setter - PullRequest
1 голос
/ 18 мая 2011

У меня есть это свойство в моем классе сущностей:

@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 не справляется с этим вообще. По крайней мере, он не включен в генерируемую схему.

Ответы [ 2 ]

2 голосов
/ 18 мая 2011

Чтобы уточнить ответ Божо: в 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) { ... } 
    ...
}
2 голосов
/ 18 мая 2011
@Access(AccessType.PROPERTY)

на вашей сущности. Это JPA 2.0. Для 1.0 используйте org.hibernate.AccessType:

@AccessType("property")

Кстати, я бы предпочел иметь простое поле с геттерами и сеттерами и вместо этого аннотировать поле. Затем, если вы хотите пользовательские преобразования, добавьте другие методы, такие как getFooAsJSON

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...