[에러노트]failed to lazily initialize a collection of role: study.wonyshop.user.entity.User.orders, could not initialize proxy - no Session

hyewon jeong·2023년 7월 6일
0

에러노트

목록 보기
31/45

1. 발생

상품등록 api 테스트 할때 생긴 에러

2. 코드

failed to lazily initialize a collection of role: study.wonyshop.user.entity.User.orders, could not initialize proxy - no Session

3. 원인

Hibernate에서는 연관관계를 지연로딩으로 설정 할 수 있는데 , 이는 연관된 엔티티의 데이터를 실제로 사용할때 까지 로딩을 지연시키는 기능이다.
하지만 연관된 엔티티의 데이터를 사용하는 시점에에서 hibernate의 세션이 이미 닫혀있는 경우, 지연 로딩된 컬렉션을 초기화 할수 없어서 생긴 에러 이다.

Hibernate는 데이터베이스와의 연결을 세션을 이용하여 관리한다. 세션을 열고 데이터베이스의 트랜잭션이 시작되고 작업이 수행된 후 완료되면 세션이 종료된다. 종료된 이후에는 데이터베이스와의 상호 작용이 불가하다.

4. 해결

기존에는 인증 처리 된 UserDetails에서 user객체를 가져오면 된다고 생각했는데,
생각해보니 인증객체때 저장된 user 객체에는 단순 email 정도의 정보 뿐 연관관계 정보는 가질리가 없지... 그래서 유저 id 를 통해 유저정보를 조회해 오니 해결되었다.
오랜만에 하니 ㅠㅠ 별거 아닌것이 .. 다시금 복습하게 됩니다.

profile
개발자꿈나무

0개의 댓글