我有一个现有的 JPA (EclipseLink) 项目,其中所需的行为是,如果在实体的字段中给出空值,则不应保留该空值。
用例是我们可以从外部来源获得这些实体的一些部分更新。这些来源可能会给我们一个空值,这并不意味着“使该字段无效”,而是意味着“我没有这个值”。
是否有注释、模式或其他工具可用于在 setter 中自动执行 null 检查或告诉 JPA 不要保留 null 值???
我可以遍历每个实体中的每个设置器并添加if(val != null) { //set the value }
但这是乏味且重复的。
例如我们有:
@Entity
@Table(name = "my_table")
public class MyObject {
@Column
private String myColumn;
public String getMyColumn() {
return this.myColumn;
}
public void setMyColumn(String val) {
this.myColumn = val;
}
}
我想要一些能自动提供帮助的东西,如下所示:
@Entity
@Table(name = "my_table")
public class MyObject {
@Column
@DontPersistIfNull
private String myColumn;
public String getMyColumn() {
return this.myColumn;
}
public void setMyColumn(String val) {
this.myColumn = val;
}
}
OR this:
@Entity
@Table(name = "my_table")
public class MyObject {
@Column
private String myColumn;
public String getMyColumn() {
return this.myColumn;
}
public void setMyColumn(String val) {
//AUTOGENERATED NULL CHECK
if(val != null) {
this.myColumn = val;
}
}
}
休眠验证器(以及任何实施javax.validation
) 有@NotNull
注解,如果注解的属性为 null,则不允许实体被持久化。我不确定hibernate-validator
可以与 EclipseLink 一起使用,但应该有一个实现javax.validation
对于 EclipseLink 也是如此。
但是,如果您想阻止设置空值 - 那么,请修改设置值的图层,而不是实体本身。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)