Java 冬眠:我不知道';我不想删除孩子

Java 冬眠:我不知道';我不想删除孩子,java,hibernate,jpa,hibernate-annotations,Java,Hibernate,Jpa,Hibernate Annotations,我是意大利人,我为我的英语道歉 我有两个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, null

我是意大利人,我为我的英语道歉

我有两个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
我使用注释在数据库中映射这些类

当我试图从数据库中删除一个角色时,hibernate会删除与该角色关联的Telefono,我不想要它。 我希望子引用在Telefono表中的persona_id字段中有一个空值,如何获得该结果?我应该使用什么注释? 谢谢大家。

JPA不是魔术

按照@Andy Dufresne的建议,删除
级联类型。删除
注释。然后您必须在
Telefono
中将
Persona
设置为
null
,并在从持久性上下文中删除
Persona
之前清除
Telefono
集合。因此,您必须删除所有关联

您甚至可以将其与注释结合使用。

JPA不是魔术

按照@Andy Dufresne的建议,删除
级联类型。删除
注释。然后您必须在
Telefono
中将
Persona
设置为
null
,并在从持久性上下文中删除
Persona
之前清除
Telefono
集合。因此,您必须删除所有关联


您甚至可以将其与注释结合使用。

如果从@ManyToOne的映射中删除CascadeType.remove,则不应删除子项。你试过了吗?谢谢你的回答。。。是的,我尝试了这个方法,但是在这种情况下,没有任何东西会被删除。如果从@ManyToOne的映射中删除CascadeType.remove,它就不会删除子对象。你试过了吗?谢谢你的回答。。。是的,我尝试了这个方法,但在这种情况下,如果我将Persona设置为null,则不会删除任何内容,然后再从数据库中删除记录,并删除一个CascaType。删除记录会被更新,但不会被删除…哪个记录?这样一来,电话号码应该被更新,人物角色应该被删除。你必须消除双方的联系,我解决了。我将关联的子端设置为null,然后从数据库中删除实体。那很好。谢谢大家。如果我将Persona设置为null,那么在从数据库中删除记录之前,请先删除一个CascaType。删除记录会被更新,但不会被删除…哪个记录?这样一来,电话号码应该被更新,人物角色应该被删除。你必须消除双方的联系,我解决了。我将关联的子端设置为null,然后从数据库中删除实体。那很好。谢谢大家。
@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