@Entity public class {articleJPA un à plusieurs enfants persistent avec son ID
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column
private Long id;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "item")
private List<Feature> features= new ArrayList<Feature>();
Enfants Entité:
public class Feature{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String attribute1;
private String attribute2;
private String featureCode;
@ManyToOne
private Item item;
.....
public String getFeatureCode() {
if (item != null) {
feature = item.getId() + attribute1 + attribute2;
}
return feature;
}
Vous pouvez voir de mon annotaiton, quand l'article pesist, il va aussi persister ses enfants.
Étant donné que l'ID composite a une très mauvaise réputation et que j'ai vraiment besoin de l'ID de ses parents dans la fonction pour faciliter les requêtes, j'ajoute un featureCode pour ajouter les trois colonnes ensemble.
Mon problème est que l'identifiant de l'article est généré à partir de la base de données. À partir des informations de débogage, je suppose que le même élément d'abord, puis mettre à jour l'élément de la fonction. Cela provoque le résultat null item.getId() null de mon featureCode.
Est-il possible de modifier le comportement de persistance en cascade de type un-à-plusieurs, comme persister d'abord, puis enregistrer les enfants?