sac*_*ale 21 java persistence jpa
EntityManager的remove(Object entity)方法是否仅适用于从find()方法获得的那些对象?
我有以下代码片段:
public void deletePerson() {
EntityManager em = getEntityManager();
Person p = new Person("x", "y", 200);
em.remove(p);
}
Run Code Online (Sandbox Code Playgroud)
但它并没有从数据库中删除特定条目.
当我尝试以下内容时:
public void deletePerson() {
EntityManager em = getEntityManager();
Person p = em.find(Person.class, 200);
em.remove(p);
}
Run Code Online (Sandbox Code Playgroud)
它工作正常.
Mik*_*unu 13
那个方向的东西.EntityManager.remove仅适用于托管实体.您如何获得这些管理实体无关紧要,例如:
但只是创建新对象并尝试删除它不起作用,因为这个新对象不是托管实体.实体也不应该分离.
实体的生命如下,所有在同一交易中(交易之外的实体不受管理):
Entity ent = new Entity(1); //entity is in new state, EntityManager never know
//anything about it
em.persist(ent); //entity is managed as long as not disconnected
//from EntityManager
em.clear(); // all previously managed entities, including ent, are now detached
Entity same = em.find(1); //managed same
em.remove(same); // entity is removed
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56640 次 |
| 最近记录: |