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 어노테이션을 써서 한 트랜잭션 내에 처리하도록 한다.
반응형