有没有办法防止空值被保留,同时允许其他值通过?

2023-12-14

我有一个现有的 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(使用前将#替换为@)

有没有办法防止空值被保留,同时允许其他值通过? 的相关文章

随机推荐