hanker

Spring Error - jakarta.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call 본문

SPRING/SPRING-ERROR

Spring Error - jakarta.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call

hanker 2024. 10. 9. 13:52

해당 오류 원인은 JPA 사용 시 트랜잭션 없이 엔티티를 영속화하려고 할 경우에 발생한다.

 

해결방법은 간단한데, EntityManager를 사용하는 클래스 상단에 

@Transactional 어노테이션을 추가하던, persist를 사용하는 메서드에 @Transactional 어노테이션을 추가하면 된다.

 

@Transactional
public class JpaMemberRepository implements MemberRepository {


    private final EntityManager em;

    public JpaMemberRepository(EntityManager em) {
        this.em = em;
    }

    @Override
    // @Transactional
    public HnMember save(HnMember member) {
        em.persist(member);
        return member;
    }

}

하단 메서드에 추가해도 되고, 클래스 상단에 추가해도 된다.

 

끝.