Existe uma maneira de impedir que valores nulos sejam persistentes enquanto permite que outros passem?

Eu tenho um projeto JPA (EclipseLink) existente em que o comportamento desejado é que, se for fornecido um valor nulo em um campo para uma entidade, esse valor nulo não deve ser persistido.

O caso de uso é que podemos obter várias atualizações parciais para essas entidades de fontes externas. Essas fontes podem nos dar um valor nulo, que não significa "anular este campo", significa "Eu não tenho esse valor".

Existe uma anotação, padrão ou outra ferramenta que possa ser usada para automatizar uma verificação nula no configurador OU dizer à JPA para não persistir em valores nulos ????

Eu posso passar por TODOS os setters em TODAS as entidades e adicionarif(val != null) { //set the value } mas isso é tedioso e repetitivo.

Por exemplo, temos:


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

Eu gostaria de ter algo que ajudasse automaticamente assim:


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

Ou isto:


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

questionAnswers(2)

yourAnswerToTheQuestion