javax.persistence.EntityNotFoundException:传递给persist的已删除实体:[com.disney.zeus.client.entity.MaterialAudioChannel#<null>] </null>

时间:2011-11-20 14:34:28

标签: jpa-2.0

我在删除子实体时遇到问题,这给了我以下异常 javax.persistence.EntityNotFoundException:传递给persist的已删除实体:[com.myproj.test.entity.XYZ#]。

父实体:

...

public class ABC implements java.io.Serializable {

...

 // it has a @oneToMany relationship with XYZ entity as specified below.

 @OneToMany(mappedBy = "abbc", cascade = CascadeType.ALL)
 private List<XYZ > xyzs;

}

...

儿童实体: -

 ...

 public class XYZ implements java.io.Serializable {

  ...

  // and this has @manyToOne relation as below

  @ManyToOne(fetch=FetchType.LAZY)
  @JoinColumn(name="ABC_ID")
  private ABC abc;

  ...

}

来自service calss iam通过将实体实例传递给delete来调用delete方法,如下所示。

删除(XYZ xyzs){

 for(XYZ xyz :xyzs){

 // i have the entityManger instance and calling remove

 entityManager..find(XYZ.class, xyz.getXyzId());

 entityManger.remove(xyz);

 }

}

现在它给了我上面指定的异常。 在这个问题上,任何人都会帮助我。 提前谢谢。

Surendar Reddy。 ķ

1 个答案:

答案 0 :(得分:0)

您只需要从父集合中删除XYZ。你有ABC的XYZ列表。 所以对于删除:

  1. 从db获取XYZ。
  2. 从db。
  3. 得到restective(与XYZ相关)ABC
  4. 从ABC中的列表中删除XYZ。
  5. 删除XYZ。
  6. 它会正常工作