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