如何将实体值设置为jpa中数据库中的值以外的其他值

时间:2014-04-08 16:12:08

标签: mysql hibernate jpa

在我的MySQL数据库中,我有一个带有字段'foo'的表X,它可以为null。我正在使用jpa向我的前端展示这个数据库的所有功能。我想要的是,每当请求表X的实体并且'foo'的值为null时,该值自动更改为另一个值。但是,这个值不应该被持久化,只能由我的前端看到。在我的数据库'foo'应保持为null。如何才能做到这一点?我可以在字段'foo'的setter中实现它吗?或者默认情况下不使用此setter?

2 个答案:

答案 0 :(得分:0)

您可以实现@PrePersist或@PostUpdate在将对象更新到db之前添加一些功能,或者您可以使用hibernate事件在其他时间执行相同的操作。当您将注释放在setter而不是局部变量时,Hibernate将使用setter。

  

取决于您是否注释字段或方法,访问类型   Hibernate使用的将是字段或属性...   source

答案 1 :(得分:0)

在Entity X中有setDefault getDefaultFoo和方法。要由前端调用,如果属性为null,则getDefaultFoo返回默认值。 setDefaultFoo并设置foo的值。

@Entity
@Table(name = "X")
public class X implements Serializable {

    @Id
    @Column(name = "id")
    private Long id;
    @Column(name = "foo")
    private String foo;

    public String getDefaultFoo() {
        return foo != null ? foo : "0";
    }

    public void setDefaultFoo(String foo) {
        setFoo(foo);
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getFoo() {
        return foo;
    }

    public void setFoo(String foo) {
        this.foo = foo;
    }
}