est-il valide pour déclarer @OneToOne
et @NotNull
des deux côtés d'une relation, tels que:Mise en veille prolongée @OneToOne @NotNull
class ChangeEntry
{
@OneToOne(cascade=CascadeType.ALL)
@NotNull
ChangeEntryDetails changeEntryDetails;
public void addDetails(ChangeEntryDetails details) {
this.changeEntryDetails = details;
details.setChangeEntry(this);
}
}
class ChangeEntryDetails
{
@OneToOne(cascase=CascadeType.ALL)
@NotNull
ChangeEntry changeEntry;
public void setChangeEntry(ChangeEntry changeEntry)
{
this.changeEntry = changeEntry;
}
}
Je ne peux pas trouver quelque chose qui dit que c'est invalide, mais il semble que, pendant la persistance d'au moins un côté de la relation doit être violée. (Par exemple, si vous écrivez changeEntry en premier, changeEntryDetails sera temporairement nul). En essayant cela, je vois une exception not-null property references a null or transient value
levée.
Je voudrais éviter de relâcher la contrainte si possible, car les deux côtés doivent être présents.
Cela me semble être un modèle de données problématique. – Yishai
Avoir une cascade des deux côtés est un peu étrange, mais cela ne devrait pas vraiment poser problème. Pourriez-vous élaborer? – Geoff
La cascade était vraiment une approche de coup de fusil pour essayer de maintenir la propriété transitoire à persister. Il ne doit pas être sur l'enregistrement Détails –