Sto utilizzando EclipseLink come mia implementazione JPA e Postgresql come mio DB.
JPA:
@Struct(name="label,.....")
@Entity
@Table(name="\"XYZ\"", schema="\"XYZ\"")
@NamedQuery(name="XYZ.findAll", query="SELECT r FROM XYZ r")
public class XYZ implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="\"resourceID\"")
private String resourceID;
@Array(databaseType = "text")
@Column(name="\"label\"")
private List<String> label;
.........
// getter/setters
}
Ho un requisito tale che per ogni attributo List nel mio JPA, ogni volta che il valore è null , voglio salvare l'elenco a partire dalla dimensione 1 con il primo elemento impostato su null .
null-----> [null]
Quindi, disinseriscilo all'indietro durante il recupero indietro se l'elenco è in arrivo come [null] impostalo su null e restituiscilo all'utente.
[null]-----> null
Attualmente posso pensare a questo approccio di modifica di ogni getter / setter di List type, per impostare / annullare il requisito di cui sopra. Qualcosa di simile
public List<String> getLabels() {
return unset(this.labels);
}
public void setLabels(List<String> labels) {
this.labels = set(labels);
}
Qui, set & unset aggiungi l'elenco precedente con il primo elemento null e reverse.
C'è un approccio più pulito a questo? Con questo devo modificare ogni gett/sett di List tipo che è un po 'macchinoso.
Non sono riuscito a trovare alcuna annotazione in EclipseLink direttamente per modificare un valore prima di persistere.
Qualsiasi aiuto sarebbe apprezzato