Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 让JPA执行实际执行的任务;“删除时设置为空”;_Java_Jpa - Fatal编程技术网

Java 让JPA执行实际执行的任务;“删除时设置为空”;

Java 让JPA执行实际执行的任务;“删除时设置为空”;,java,jpa,Java,Jpa,手动编写数据库模式时,可以将外部关系级联设置为“on delete set null” 我在Stackoverflow和google上搜索过答案,但我找不到:你如何让JPA也这么做 那么,当我与@OneToOne、@OneToMany或@ManyToMany建立关系时,是什么级联类型实现了这一点,或者是我需要做的其他事情 以对象House和Person为例。一栋房子可以选择由一个人拥有。但是假设主人死了。House实例应该仍然存在,但是“owner”字段(Person类型)应该简单地设置为nul

手动编写数据库模式时,可以将外部关系级联设置为“on delete set null”

我在Stackoverflow和google上搜索过答案,但我找不到:你如何让JPA也这么做

那么,当我与@OneToOne、@OneToMany或@ManyToMany建立关系时,是什么级联类型实现了这一点,或者是我需要做的其他事情

以对象House和Person为例。一栋房子可以选择由一个人拥有。但是假设主人死了。House实例应该仍然存在,但是“owner”字段(Person类型)应该简单地设置为null


这可以通过JPA自动完成吗?

我认为,一种可能的方法是使用一个实体生命周期回调

班级人员{
@预移除
受保护的void makeHouseOnSale(){
如果(拥有!=null){
owning.owner=null;
}
}
@奥内托内
私人拥有房屋;
}
班房{
@奥内托内(
//optional=true;//默认值
)
私人业主;
}

当您在
JTA
会话中删除(杀死)一个
Person
实例时,将调用
@PreRemove
带注释的方法,并在会话结束时提交这两个实体。

它必须是双向的。为什么jpa不直接支持。