Quelqu'un peut-il m'aider à comprendre comment configurer Hibernate pour faire ce que je veux ?
J'ai une entité parent "Appartement" avec une liste de "Pièces" comme enfants. J'ai un formulaire pour éditer les "Appartements" et dans ce formulaire, j'ai listé tous les "Pièces" enfants, juste à titre d'information. Les chambres sont ajoutées et modifiées dans un formulaire séparé.
Donc, parce que je liste les chambres dans le formulaire appartement, j'ai mis lazyloading à false :
@OneToMany
@JoinColumn (name = "appartmentId")
@LazyCollection (LazyCollectionOption.FALSE)
private List<Room> room;
Mais si je modifie un appartement et le stocke, toutes les pièces de l'appartement disparaissent soudainement. Dans la base de données, elles ne sont pas supprimées, mais déréférencées (comme dans appartmentId = null).
Alors, comment puis-je configurer Hibernate pour qu'il ne fasse que persister mon Appartment-objet. Et ne pas toucher aux enfants du tout ?
C'est mon action de sauvegarde :
public String save() throws Exception {
boolean isNew = (appartment.getAppartmentId() == null);
appartment = appartmentManager.save(appartment);
String key = (isNew) ? "appartment.added" : "appartment.updated";
saveMessage(getText(key));
return SUCCESS;
}