小编典典

javax.persistence.Entitymanager:remove()方法

java

是否 删除 (对象实体)的方法 EntityManager的 工作只对这些对象从得到 的发现 ()方法?

我有以下代码片段:

public void deletePerson() {
    EntityManager em = getEntityManager();
    Person p = new Person("x", "y", 200);
    em.remove(p);
}

但这不是从数据库中删除特定条目。

当我尝试以下内容时:

public void deletePerson() {
    EntityManager em = getEntityManager();
    Person p = em.find(Person.class, 200);
    em.remove(p);
}

一切正常。


阅读 341

收藏
2020-12-03

共1个答案

小编典典

引用ObjectDB的有关删除JPA实体对象的手册:

为了从数据库中删除对象,必须首先检索该对象(无论采用哪种方式),然后在活动事务中,可以使用remove方法将其删除。

如果参数不是实体类的实例或者它是一个分离的实体,则remove会抛出IllegalArgumentException。

使用new运算符创建对象时,它成为一个分离的实体,如果要删除它,则需要保留它。

检索实体时,您正在检索持久性实体。

2020-12-03