Gibt es eine Möglichkeit zu verhindern, dass Nullwerte beibehalten werden, während andere durchgelassen werden?

Ich habe ein bestehendes JPA (EclipseLink) -Projekt, in dem das gewünschte Verhalten darin besteht, dass bei Angabe eines Nullwerts in einem Feld für eine Entität dieser Nullwert nicht beibehalten werden sollte.

Der Anwendungsfall ist, dass wir möglicherweise mehrere Teilaktualisierungen dieser Entitäten aus externen Quellen erhalten. Diese Quellen geben uns möglicherweise einen Nullwert, der nicht "dieses Feld aufheben" bedeutet, sondern "ich habe diesen Wert nicht".

Gibt es eine Anmerkung, ein Muster oder ein anderes Werkzeug, mit dem eine Nullprüfung im Setter automatisiert werden kann, ODER weist JPA an, Nullwerte nicht beizubehalten?

Ich kann JEDEN Setter in JEDER Entität durchgehen und hinzufügenif(val != null) { //set the value } aber das ist mühsam und sich wiederholend.

Zum Beispiel haben wir:


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

Ich hätte gerne etwas, das automatisch hilft:


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

Oder dieses:


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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage