¿Es válido para declarar @OneToOne
y @NotNull
a ambos lados de una relación, tales como: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;
}
}
no puedo encontrar nada de lo que dice que esto no es válido, pero parece que durante persistencia, se debe violar al menos un lado de la relación. (Por ejemplo, si escribe changeEntry primero, changeEntryDetails será nulo temporalmente).
Al intentar esto, veo una excepción lanzada not-null property references a null or transient value
.
me gustaría evitar la relajación de la restricción, si es posible, debido a que ambos lados deben estar presente.
Me parece un modelo de datos problemático. – Yishai
Tener cascada en ambos lados es un poco extraño, pero no debería ser realmente problemático. ¿Podrías elaborar? – Geoff
La cascada era realmente un enfoque de disparo para tratar de que persistiera la propiedad transitoria. No tiene que estar en el registro de detalles –