다음 도메인 모델을 감안할 때 s 및 해당 하위 하위를 Answer
포함한 모든을로드 하고 JSON으로 변환하려고합니다. 작동하는 솔루션이 있지만 ad-hoc을 사용하여 제거하려는 N + 1 문제가 발생합니다 . 모든 연결이 구성되었습니다 .Value
AnswerDTO
@EntityGraph
LAZY
@Query("SELECT a FROM Answer a")
@EntityGraph(attributePaths = {"value"})
public List<Answer> findAll();
방법 @EntityGraph
에 ad-hoc 을 사용하면 연결 Repository
에서 N + 1을 방지하기 위해 값을 프리 페치 할 수 Answer->Value
있습니다. 내 결과는 괜찮지 만 s 의 selected
연결이 느리게로드되어 또 다른 N + 1 문제가 MCValue
있습니다.
이것을 사용하여
@EntityGraph(attributePaths = {"value.selected"})
selected
필드는 물론 일부 Value
엔티티 의 일부 이므로 실패합니다 .
Unable to locate Attribute with the the given name [selected] on this ManagedType [x.model.Value];
JPA selected
가 값이 MCValue
? 인 경우 연결을 가져 오도록 시도하는 방법은 무엇입니까? 와 같은 것이 필요합니다 optionalAttributePaths
.
selected
했습니다MCValue
. 나는 이것이 추가적인 루프를 요구한다는 것을 싫어했고 데이터 세트 간의 매핑을 관리해야합니다. 나는 이것을 위해 Hibernate 캐시를 이용하는 아이디어를 좋아한다. 결과를 포함하기 위해 캐시에 의존하는 것이 얼마나 안전한지 (일관성 측면에서) 자세히 설명 할 수 있습니까? 트랜잭션에서 쿼리를 수행 할 때 작동합니까? 나는 발견하기 어려운 산발적 인 초기화 오류를 두려워합니다.