que tienen dos entidades, con las siguientes anotaciones JPA:@OneToOne y @JoinColumn, auto delete null entity, doable?
@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;
}
propietario y datos tiene correlación de uno a uno, el lado propietario es propietario. El problema se produce cuando ejecuto: owner.setData (null); ownerDao.update (owner); El Data_id de la tabla "Propietario" se vuelve nulo, eso es correcto.
Pero la fila "Datos" no se elimina automáticamente. Tengo que escribir otro DataDao y otra capa de servicio para ajustar las dos acciones (ownerDao.update (owner); dataDao.delete (data);)
¿Es posible hacer que una fila de datos se elimine automáticamente cuando el propietario Propietario lo puso a nulo?
¡Gracias, funciona! Y ... CascadeType.DELETE_ORPHAN está en desuso. Se reemplaza por @OneToOne (fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true) – smallufo
FetchType.EAGER es esencial para la eliminación huérfana, parece. La eliminación de FetchType.LAZY huérfano no funciona. Hibernate versión 4.3.10.FINAL. –
Usando Hibernate 5.0.11.FINAL, esto fue suficiente para mí '@OneToOne (cascade = CascadeType.ALL, orphanRemoval = true)'. Tuve éxito usando 'FetchType.LAZY' o' FetchType.EAGER'. 'EAGER' es el predeterminado. –