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

时间:2014-02-04 07:51:39

标签: java jpa many-to-one

多对一:

删除子对象时,它还会删除多对一关系中的父对象。在父母和孩子中保存单个对象时,它工作正常。但是,如果我向一个父类添加多个子对象(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;

2 个答案:

答案 0 :(得分:1)

您可以在下面的链接中找到问题的正确答案。还有同样的问题@kostja解释得非常好。

How to delete Child or Parent objects from Relationship?

答案 1 :(得分:0)

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

如何将父级映射到子级。目前,您刚刚将孩子映射到父级。但是您的父级未映射到子级。有两个选项

  1. 您可以更正父映射并在父级中添加一组子级列表。

    Set<ChildPojo> children;
    
  2. 或者,如果您的逻辑真的需要这样一个破碎的映射,那么您必须首先找到所有具有相同父级的子项,然后删除您要删除的子项。