gpt4 book ai didi

java - 有没有办法在允许其他人通过的同时防止空值被保留?

转载 作者:搜寻专家 更新时间:2023-10-31 20:16:21 25 4
gpt4 key购买 nike

我有一个现有的 JPA (EclipseLink) 项目,其中所需的行为是,如果在实体的字段中给出空值,则不应保留该空值。

用例是我们可以从外部来源获得这些实体的几个部分更新。这些来源可能会给我们一个空值,这并不意味着“使这个字段无效”,它意味着“我没有这个值”。

是否有注释、模式或其他工具可用于在 setter 中自动执行空值检查或告诉 JPA 不要保留空值????

我可以遍历每个实体中的每个 setter 并添加 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;
}
}

或者这个:


@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;
}
}
}

最佳答案

Hibernate validator (以及 javax.validation 的任何实现)具有 @NotNull 注释,如果注释属性为 null,它将不允许实体被持久化。我不确定 hibernate-validator 是否可以与 EclipseLink 一起使用,但 EclipseLink 也应该有一个 javax.validation 的实现。

但是如果你想阻止设置空值 - 好吧,那么修改设置值的层,而不是实体本身。

关于java - 有没有办法在允许其他人通过的同时防止空值被保留?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2088743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com