Computer Science/Web Programming

[JPA] java.lang.IllegalArgumentException: Removing a detached instance

2021. 2. 9. 13:03

Problem

public void delete(Object entity) {
	EntityManager entityManager = entityManagerFactory.createEntityManager();
	Session session = entityManager.unwrap(Session.class);
	session.delete(entity);
	session.flush();
	entityManager.close();
}

위 코드를 이용하여 entity를 제거하려고 했더니 detached instance를 제거하려 했다고 Exception을 throw했다.

Solution

public void delete(Object entity) {
	EntityManager entityManager = entityManagerFactory.createEntityManager();
	Session session = entityManager.unwrap(Session.class);
	//session.delete(entity);
	session.delete(entityManager.contains(entity) ? entity : entityManager.merge(entity));
	session.flush();
	entityManager.close();
}

위와 같이 수정하면 문제가 해결된다.

Reference

728x90
반응형