Java 在多对一关系中如何删除子对象

Java 在多对一关系中如何删除子对象,java,jpa,many-to-one,Java,Jpa,Many To One,多对一: 删除子对象时,还应删除多对一关系中的父对象。在父对象和子对象中保存单个对象时,它工作正常。但是,如果我向一个父类添加多个子对象(2个或多个),那么如何从一个父类的子对象列表中删除该子对象 儿童POJO: @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name="id") private int id; @Column(name="cName") private String cName

多对一:

删除子对象时,还应删除多对一关系中的父对象。在父对象和子对象中保存单个对象时,它工作正常。但是,如果我向一个父类添加多个子对象(2个或多个),那么如何从一个父类的子对象列表中删除该子对象

儿童POJO:

  @Id
  @GeneratedValue(strategy=GenerationType.IDENTITY)
  @Column(name="id")
  private int id;
  @Column(name="cName")
  private String cName;  

  @ManyToOne(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
  @JoinColumn(name="pId")
  private Parent parent
父POJO:

  @Id
  @GeneratedValue(strategy=GenerationType.IDENTITY)
  @Column(name="id")
  private int id;
  @Column(name="pName")
  private String pName;
  @Column(name="address")
  private String address;

您将获得父对象中存在的子对象集合的迭代器。然后使用迭代器迭代到要删除的特定子对象,并删除子对象并更新父对象

如何将父对象映射到子对象。目前,您刚刚将您的子项映射到父项。但您的父对象未映射到子对象。有两种选择

  • 您可以更正父映射,并在父映射中添加子映射集/子映射列表

    设置子对象;
    
  • 或者,如果您的逻辑确实需要这样一个断开的映射,那么您必须首先找到具有相同父级的所有子级,然后删除希望删除的子级


  • 您将在下面的链接中找到问题的正确答案。同样的问题@kostja也解释得很好


    在多对一关系中,关系从子对象应用到父对象,这就是我这样映射的原因。当从表中删除单个子对象时,它将通过异常进行处理。该异常类似于无法删除父类对象。谢谢,因为您的映射已断开。要删除子对象,您必须首先取消父对象的链接。将子对象中的父对象设置为null。更新孩子,然后删除我的答案,这一页将帮助你。
    Set<ChildPojo> children;