2012-10-17 4 views
3

나는 resultedList를 typedQuery 객체로부터 얻습니다. 그 목록에서 첫 번째 개체를 가져옵니다.JPA : 분리 된 인스턴스 삭제

예 :

LoginAttempt loginAttempt = loginAttempts.get(0);이 때, 나는이 개체를 업데이트하고 성공적으로 업데이트됩니다 entityManager.merge(loginAttempt);를 호출합니다.

하지만이 개체를 삭제하기 위하여려고 할 때 나에게 예외 예를 제공합니다. java.lang.IllegalArgumentException: Removing a detached instance.

어떤 제안. 감사합니다 :)

사실, 나는 오직 제거하고 싶습니다. 병합이 작동하지만 혼동을 일으키는 것이 혼동 스럽기 때문에 병합을 언급합니다.

답변

9

병합이 실제로 작동하고 두 개의 트랜잭션에서 그들을 동일한 트랜잭션에서 그것을 할, 또는 분리 할 필요가있다. 반면에 제거는 관리되는 엔터티에서만 작동 할 수 있습니다. 당신이 관리 대상 항목이있는 경우

, 당신은에 em.remove(-)를 호출 할 수 있습니다. 당신이 분리 된 개체가있는 경우
, 당신은 Object managed = em.merge(detached) 다음 em.remove(managed) 호출해야합니다. 동일한 트랜잭션 경계 내에서이 작업을 수행해야합니다.

0

quick search reveals 동일한 트랜잭션에서이 작업을 수행해야합니다. 병합 후 삭제할 수 없습니다. 당신은 관리 상태로 분리에서 목적이 통과하는 것입니다 때문에

+0

사실, 나는 단지 제거하고 싶습니다. 병합은 작동하지만 제거가 작동하지 않는다고 혼란스러워하기 때문에 병합을 언급합니다 ... –

관련 문제