Spring

Spring - LazyInitializationException: could not initialize proxy – no Session

codeManager 2022. 9. 20. 01:32
반응형

 

JPA를 쓰다보면 이런 에러메시지를 볼 때가 있습니다.

 

에러메시지

Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.example.domain.CompanyEntity.personList, could not initialize proxy - no Session

 

 

Entity 코드

@Entity
@Table(name = "company")
public class Company implements Serializable {
    @Id
    @Column(name = "id")
    private Long id;
    
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "company", cascade = CascadeType.REMOVE)
    @Where(clause = "del_yn = 'N'")
    private List<Person> personList;
    
}

 

select한 entity가 영속성 컨텍스트 내에 존재하지 않아서 발생한 에러입니다.

 

한 트랜잭션 안에 해당 entity가 존재하지 않는다는 의미입니다.

 

 

해결방법

 

1. lazy loading(FetchType.LAZY)을 FetchType.EAGER 로 바꾸는 방법 (성능이 떨어지므로 추천하지 않음)

 

2. @Transactional 어노테이션을 써서 한 트랜잭션 내에 처리하도록 한다.

 

 

 

반응형