小编Amr*_*Aly的帖子

如何强制hibernate调用setter方法来填充类字段?

我有一个持久化类,其中有一个瞬态字段表示此类的API版本(我为api请求使用的字段的子集).这个字段@Transient就像我简单地使用其他字段来创建它一样.

问题是hibernate使用默认的空构造函数来实例化类和反射以访问字段...所以我不能在constrorctor上实例化我的瞬态类,也不能调用setter方法

我试图激活getter方法而不是字段强制hibernate使用setter,但它不起作用

我试图@Access(AccessType.PROPERTY)在字段上使用,但它没有用

如何强制hibernate调用setter方法来填充类字段?

@Entity
public class User {

    @Transient
    private ApiUser tempUser = new ApiUser ();

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Access(AccessType.PROPERTY)
    @Column(nullable = false)
    private String name;
    @Access(AccessType.PROPERTY)
    @Column(nullable = false, unique = true)
    private String username;
@Access(AccessType.PROPERTY)
    @Column(nullable = false)
    private String userId;

//lots of others fields//
public void setUsername(String username) {
        this.username = username;
        this.tempUser.setUsername(username);
    }
public void setUserId(String userId) {
        this.userId = userId;
        this.tempUser.setId(Long.parseLong(userId)); …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa

3
推荐指数
1
解决办法
2137
查看次数

标签 统计

hibernate ×1

java ×1

jpa ×1