[英]Hibernate: I don't want delete child
我是意大利人,我為我的英語道歉。
我有兩個POJO類,分別在我的Db中代表一個父表和一個子表。
家長。 Persona.java
@Id @GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "nome", length = 30, nullable = false)
private String nome;
@Column(name = "cognome", length = 30, nullable = false)
private String cognome;
@Column(name = "eta")
private int eta;
@OneToMany(cascade = {CascadeType.PERSIST, CascadeType.REFRESH}, mappedBy = "persona", orphanRemoval = false)
@Column(nullable = true)
private List<Telefono> numeriDiTelefono;
// Others getters and setters
兒童。 Telefono.java
@Id
@Column(name = "numero_telefono")
private String numeroDiTelefono;
@Column(name = "tipo")
private String tipo;
@ManyToOne(cascade = {CascadeType.REMOVE, CascadeType.PERSIST })
@JoinColumn(name = "persona_id", nullable = true)
private Persona persona;
// Others getters and setters
我已經使用注釋來映射數據庫中的這些類。
當我嘗試從數據庫中刪除角色時,休眠刪除與該角色相關聯的Telefono,但我不想要它。 我希望孩子引用到Telefono表中的persona_id字段中有一個空值,如何獲得該結果? 我應該使用什么注釋? 謝謝大家
JPA不是魔術。
按照@Andy Dufresne的建議,刪除CascadeType.REMOVE
批注。 然后,您必須在Telefono
中將Persona
設置為null
,並清除Persona
的Telefono
集合,然后再從持久性上下文中刪除Persona
。 因此,您必須刪除所有關聯。
您甚至可以將其與@PreRemove
批注結合使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.