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