Java Can';t删除属于@manytone关系一部分的JPA实体
我有两个域对象,如下所示:Java Can';t删除属于@manytone关系一部分的JPA实体,java,hibernate,jpa,spring-boot,spring-data-jpa,Java,Hibernate,Jpa,Spring Boot,Spring Data Jpa,我有两个域对象,如下所示: @Entity public class Employee { @Id @Column(nullable = false, name = "id") protected Integer id; // Note: org_id is just an integer column in the database @JoinColumn(nullable = true, name = "org_id") @ManyToOne(targetEntit
@Entity
public class Employee {
@Id
@Column(nullable = false, name = "id")
protected Integer id;
// Note: org_id is just an integer column in the database
@JoinColumn(nullable = true, name = "org_id")
@ManyToOne(targetEntity = Org.class)
private Org org;
}
……和:
@Entity
public class Org {
@Id
@Column(nullable = false, name = "id")
protected Integer id;
}
在我的逻辑中,我需要对数据库中实际保存的内容进行一些剧烈的更改。i、 e.一些组织被删除,其中的员工被重新分配
我的问题是,我的程序逻辑目前执行以下操作:
org.springframework.data.repository.Delete删除所有需要删除的员工(Iterable您不希望cascade
,因为您自己说过不希望删除相关对象(cascade就是这么做的)
如果一个组织
需要删除,但仍然有一个FK指向它,那么只需在员工
(s)中取消指向组织
的链接即可…在删除组织
之前。您可以通过JPQL查询来检索链接到特定组织
的所有员工
对象,然后将其关系字段设为空。或者,批量更新可以一次性完成(但要小心内存中的对象,因为它们需要刷新
()你不想要级联,因为你自己说过你不想删除相关的对象(级联就是这么做的)
如果一个组织
需要删除,但仍然有一个FK指向它,那么只需在员工
(s)中取消指向组织
的链接即可…在删除组织
之前。您可以通过JPQL查询来检索链接到特定组织
的所有员工
对象,然后将其关系字段设为空。或者,批量更新可以一次性完成(但要小心内存中的对象,因为它们需要刷新
()你不想级联,因为你已经说过你不想删除相关的对象。因此,如果一个组织需要删除,但仍然有一个指向它的FK,那么只需清空员工中指向组织的链接即可…在删除Org
@NeilStockton之前-谢谢,这正是我需要的指针(我已经盯着这个问题太久了,看不到明显的东西!)。如果你想发布你的评论作为回答,我很乐意接受。你不想级联,因为你已经说过你不想删除相关对象。因此,如果一个组织
需要删除,但仍然有一个FK指向它,那么只需清空员工
中指向该组织的链接即可…在删除Org
@NeilStockton之前-谢谢,这正是我需要的指针(我已经盯着这个问题太久了,看不到明显的问题!)。如果你想把你的评论作为答案发表,我很乐意接受。
CONSTRAINT fk_employees_org_id FOREIGN KEY (org_id)
REFERENCES public.orgs (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE SET NULL