ho due entità, con le seguenti annotazioni APP:@OneToOne e @JoinColumn, eliminazione automatica entità nulla, fattibile?
@Entity
@Table(name = "Owner")
public class Owner implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private long id;
@OneToOne(fetch=FetchType.EAGER , cascade=CascadeType.ALL)
@JoinColumn(name="Data_id")
private Data Data;
}
@Entity
@Table(name = "Data")
public class Data implements Serializable
{
@Id
private long id;
}
proprietario e dati sono mappatura uno-a-uno, il lato proprietario è proprietario. Il problema si verifica quando eseguo: owner.setData (null); ownerDao.update (owner); Il Data_id della tabella "Proprietario" diventa nullo, è corretto.
Ma la riga "Dati" non viene cancellata automaticamente. Devo scrivere un altro DataDao e un altro livello di servizio per avvolgere le due azioni (proprietarioDao.update (proprietario); dataDao.delete (dati);)
E 'possibile fare una riga di dati cancellata automaticamente quando il proprietario Il proprietario lo ha impostato su null?
Grazie, funziona !!! E ... CascadeType.DELETE_ORPHAN è obsoleto. È sostituito da @OneToOne (fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true) – smallufo
FetchType.EAGER è essenziale per la rimozione degli orfani a quanto pare. La rimozione orfana FetchType.LAZY non funziona. Hibernate versione 4.3.10.FINAL. –
Utilizzando Hibernate 5.0.11.FINAL, questo è stato sufficiente per me '@OneToOne (cascade = CascadeType.ALL, orphanRemoval = true)'. Ho avuto successo usando 'FetchType.LAZY' o' FetchType.EAGER'. 'EAGER' è il valore predefinito. –