@ElementCollection
@Column(name = "day")
private List<String> day;
나의 경우에는 위의 List에 저장된 day를 조회할때 다음과 같은 오류가 발생하였다.
이 오류의 원인은 지연오류라는 것을 염두에 두고 해결 과정을 찾아 여러가지를 시도하던 중 @EntityGraph를 이용해 즉시로딩을 하는 방법을 찾았다.
public interface UserCareServiceRepository extends JpaRepository<UserCareService, Integer> {
@EntityGraph(attributePaths = {"day"})
@Override
Optional<UserCareService> findById(Integer id);
}
다음과 같이 findById메서드를 오버라이딩 한 후 @EntityGraph어노테이션을 붙여 findById로 조회하면 프록시가 아닌 실제 엔티티객체를 조회하여 오류를 해결할 수 있다. 단 즉시로딩을 하면 연관된 쿼리를 조회할때 모든 연관 쿼리를 불러오는 N+1문제를 야기할 수 있으므로 상황에 맞게 사용해야 한다.