작성
·
147
0
안녕하세요
테스트 돌릴때는
정상적으로 인서트 및 @Transactional를 활용한 롤백 등 의도 동작이 되는데
API의 JSON 형태로 던지면
javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call
의 경우가 발생 하는데 어떤 문제인지 힌트좀 주실 수 있을까요..
EntityManagerFactory emf = Persistence.createEntityManagerFactory("unitname");
// EntityManager em = emf.createEntityManager();
// EntityTransaction tx = em.getTransaction();
// System.out.println("event Insert Start");
EntityTransaction tx = em.getTransaction();
tx.begin();
em.persist(event);
tx.commit();
em.close();
위 처럼 해당 Dao에서 엔티티매니저를 생성 해서 사용하면 커밋이 작동 하긴 합니다..
답변 1
0
안녕하세요. 이도님
JPA의 모든 데이터 변경은 트랜잭션 안에서 이루어져야 합니다. 그렇지 않으면 해당 오류가 발생합니다.
추가로 스프링 프레임워크에서 JPA를 사용할 때는 스프링이 제공하는 방식으로 JPA를 사용해야 합니다.
관련 내용은 활용1편을 참고해주세요^^
감사합니다.