javax.persistence.Entitymanager: remove() method

Viewed 70543

Does remove(Object entity) method of EntityManager work only on those objects got from find() method?

I have following code snippet:

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

But it is not removing the particular entry from database.

When I tried something like below:

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

It's working fine.

4 Answers

With JPA, you can remove an entity without retrieving it by simply executing a delete statement:

javax.persistence.Query q= entityManager.createQuery("delete from A where id = :id");
q.setParameter("id", "value of id to delete");
int deletedRows = q.executeUpdate();
Related