Salve ho la necessità di realizzare una relazione di tipo OneToOne fra due classi entità che devono essere rese persistenti mediante Hibernate.
Il problema è che neccessito di un'associazione bidirezionale ed obbligatoria.
@Entity
@Table(name = "Tessere")
public class DBTessera {
@Id
@Column(name = "ID")
@GeneratedValue
private int id;
@Column(name = "DataRilascio")
private Date dataRilascio;
@Column(name = "CreditoResiduo")
private float credito;
@OneToOne(mappedBy = "dbTessera")
private DBSocio dbSocio;
...
}
@Entity
@Table(name = "Soci")
public class DBSocio {
@Id
@Column(name = "ID")
@GeneratedValue
private int id;
@Column(name = "Nome")
private String nome;
@Column(name = "Cognome")
private String cognome;
@Column(name = "Telefono")
private String telefono;
@Column(name = "EMail")
private String email;
@OneToOne(optional = false, cascade = CascadeType.ALL)
@JoinColumn(name = "IDTessera")
private DBTessera dbTessera;
...
}
A questo punto se creo un oggetto di tipo DBSocio e gli assegno un riferimento ad un oggetto di tipo DBTessera e cerco di salvare l'oggetto DBSocio mi compare l'errore
Cannot add or update a child row: a foreign key constraint fails (`complessosportivo`.`soci`, CONSTRAINT `FK_7gnoxc84fdftkdkwp2e2bwd6w` FOREIGN KEY (`IDTessera`) REFERENCES `tessere` (`ID`))
Sapete come potrei risolvere il problema evitando di dovere rendere l'associazione opzionale in modo da salvare prima un'entity e poi l'altra ad essa collegata?
Grazie