2009-08-27 3 views
1

JOTM과 Hibernate EntityManager를 통합하여 트랜잭션 방식의 환경에서 컨테이너 밖에서 EJB를 테스트하려고한다. Hibernate EntityManager + JOTM : 트랜잭션이 사용되지 않는다.

  • 구성 최대 절전 모드 및 EMF를 만들 JNDI에 데이터 소스를 넣어 JNDI에

    1. 시작 JOTM
    2. 넣어 JOTM의 UserTransaction을
    3. 작성 및 구성 StandardXADataSource
    4. 을 :

      내 테스트는 다음과 같습니다

    5. EM 만들기
    6. 눈물 모든 것을 내려
    7. 기록의 수에 대한 데이터베이스를 확인
    8. 스토어에게 EM에서 트랜잭션에 참여
    9. 그것이
    10. 롤백에게 거래
    11. 저장되어 있는지 확인 엔티티를 거래
    12. 시작

    내 코드는 다음과 같습니다. http://pastebin.com/m22a9f6b

    http://pastebin.com/m6da9383a

    테스트 단계 (12) (라인 121)에 실패 1,515,

    여기 로깅 출력된다.

    트랜잭션을 롤백 했는데도 DB에 레코드가 있습니다. 트랜잭션이 전혀 사용되지 않고 레코드가 db로 전달 된 것처럼 보입니다.

    어떻게 이런 일이 벌어지고 어떻게 해결 될지 생각해보십시오.

  • 답변

    0

    나는 간단한 연결 대신 XAConnection을 반환하는 ConnectionProvider의 자체 구현을 제공해야한다고 생각했습니다. 이 방법은 트랜잭션이 작동하는 것 같습니다

    +0

    나는 같은 종류의 문제를 가지고 있지만 봄 컨텍스트에서. http://stackoverflow.com/questions/1519968/spring-jta-jpa-unit-test-rollback-not-working 도와 드릴 수 있습니까? – Michel

    관련 문제