必须管理实体以调用删除?

时间:2015-09-29 17:02:34

标签: java jpa

0

它不起作用我不知道为什么?给了我public Person deletePerson(Person entity) { EntityManager ems = emf.createEntityManager(); try { ems.getTransaction().begin(); ems.merge(entity); ems.remove(entity); ems.getTransaction().commit(); } finally { ems.close(); } return entity; }

1 个答案:

答案 0 :(得分:5)

它不起作用,因为删除操作需要将托管实体传递给它。您可以像这样修改代码以使其工作:

 entity = ems.merge(entity);
 ems.remove(entity);

因为merge返回托管实体实例,您可以使用它返回的对象调用remove,因为它由JPA管理(传递给merge的对象不受影响,这就是你的代码失败的原因。)