Java 让JPA执行实际执行的任务;“删除时设置为空”;
手动编写数据库模式时,可以将外部关系级联设置为“on delete set null” 我在Stackoverflow和google上搜索过答案,但我找不到:你如何让JPA也这么做 那么,当我与@OneToOne、@OneToMany或@ManyToMany建立关系时,是什么级联类型实现了这一点,或者是我需要做的其他事情 以对象House和Person为例。一栋房子可以选择由一个人拥有。但是假设主人死了。House实例应该仍然存在,但是“owner”字段(Person类型)应该简单地设置为nullJava 让JPA执行实际执行的任务;“删除时设置为空”;,java,jpa,Java,Jpa,手动编写数据库模式时,可以将外部关系级联设置为“on delete set null” 我在Stackoverflow和google上搜索过答案,但我找不到:你如何让JPA也这么做 那么,当我与@OneToOne、@OneToMany或@ManyToMany建立关系时,是什么级联类型实现了这一点,或者是我需要做的其他事情 以对象House和Person为例。一栋房子可以选择由一个人拥有。但是假设主人死了。House实例应该仍然存在,但是“owner”字段(Person类型)应该简单地设置为nul
这可以通过JPA自动完成吗?我认为,一种可能的方法是使用一个实体生命周期回调
班级人员{
@预移除
受保护的void makeHouseOnSale(){
如果(拥有!=null){
owning.owner=null;
}
}
@奥内托内
私人拥有房屋;
}
班房{
@奥内托内(
//optional=true;//默认值
)
私人业主;
}
当您在
JTA
会话中删除(杀死)一个Person
实例时,将调用@PreRemove
带注释的方法,并在会话结束时提交这两个实体。它必须是双向的。为什么jpa不直接支持。