簡體   English   中英

休眠:我不想刪除孩子

[英]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 ,並清除PersonaTelefono集合,然后再從持久性上下文中刪除Persona 因此,您必須刪除所有關聯。

您甚至可以將其與@PreRemove批注結合使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM