Ist es gültig @OneToOne
und @NotNull
auf beiden Seiten einer Beziehung zu erklären, wie:Hibernate @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;
}
}
Ich kann nichts finden, das sagt dieser ungültig ist, aber es scheint, dass während Persistenz mindestens einer Seite der Beziehung muss verletzt werden. (ZB wenn ChangeEntry zuerst geschrieben wird, wird ChangeEntryDetails vorübergehend null).
Wenn ich dies versuche, sehe ich eine Ausnahme geworfen not-null property references a null or transient value
.
Ich möchte vermeiden, die Beschränkung wenn möglich zu entspannen, da beide Seiten müssen vorhanden sein.
Scheint wie ein problematisches Datenmodell für mich. – Yishai
Cascade auf beiden Seiten ist ein wenig seltsam, aber es sollte nicht wirklich problematisch sein. Könnten Sie das näher ausführen? – Geoff
Die Kaskade war wirklich ein Schrotflintenansatz, um zu versuchen, die transiente Eigenschaft zu erhalten. Es muss nicht auf dem Datensatz Details sein –