2011-02-24 2 views
2

Role 엔티티를 생성 했으므로 여기에 CRUD 작업을 수행하려고합니다. "D"(삭제) 작업을 제외한 모든 것이 잘 작동합니다.JPA의 remove()를 호출 할 때 : "JTA EntityManager가 getTransaction()을 사용할 수 없습니다"

나는 ObjectDB example code과 비슷한 것을 사용합니다.

위에 인용 한 웹 페이지에 명시된 바와 같이

,

IllegalArgumentException가 인수가 엔티티 클래스의 인스턴스가 아닌 경우 제거가 을 던져 또는 가 분리 된 법인 인 경우입니다.

어떻게해야합니까? 나는 무엇을 잘못 했는가?

내 엔티티는 User 엔티티와 관련됩니다 (역할에는 여러 사용자가 있는데 하나는 역할 만 가질 수 있음). 그러나 제거하려는 인스턴스 인 Role은 어떤 활성 사용자 인스턴스에도 연결되지 않습니다.

답변

3

답장을 보내 주셔서 감사합니다. 그러나 도움이되지 못했습니다. 나는 그것이 JTA와 관련이 있다고 생각하지만. 는 그러나 나는 해결책을 발견, 그래서 나는 여기를 공유하고 싶습니다 '

대신 :

public void removeRole(Role aRole) { 
    entityManager.remove(aRole);  
} 

내가해야 할 일을했을 모든되었다

public void removeRole(Role aRole) { 
entityManager.remove(entityManager.merge(aRole)); 
} 

을 그리고는 않습니다 장난. 그림을 이동.

1

어떤 오류가 발생하고 있습니까?

JTA를 사용하는 경우 EntityManager 트랜잭션을 사용할 수 없으며 JTA 트랜잭션 (EJB 또는 conext의 사용자 트랜잭션 조회)을 사용해야합니다. JTA를 사용하도록 JPA를 설정하거나 EM 트랜잭션이 아닌 JTA를 사용하지 마십시오.

관련 문제