데이터 테이블에서 첫번째보기
만 두 섹션 테이블 데이터
열 아래 플레이트 (1) 추천, 자식 없습니다
14 개의 서브 - 부분 아래 제 2
쿼리 한 끝에, 결과는 16이
즉 1+ 2+ 포럼 2 항과 그의 14 개 집합이 나열되어 판이다, 이것은 분명히 잘못된 것입니다
플레이트 구성 개체
@OneToMany (캐스케이드 = {} = FetchType.EAGER가 FETCH에 CascadeType.ALL) @JoinColumn을 (NAME = "sectionId") // 협회 컬럼 모델에 외부 키
나는 발생하는 긴급 부하가 무엇인지 추측
찰스 문이 필요합니다
절전 : 선택 this_.id 로 id1_17_1_, .... 에서 this_ t_section 좌 외측을 가입 t_column columnmode2_ 에 this_.id = columnmode2_.sectionId 하이버 네이트 : 선택 columnmode0_.id 같이 , id1_7_ .... 에서 t_column의 columnmode0_ 여기서 columnmode0_.sectionid = ' 1 '
이 정책은 삭제하도록 구성되어
@OneToMany (캐스케이드 = {}에서 CascadeType.ALL ) @JoinColumn (이름 = "sectionId") // 협회 컬럼 모델에 외부 키
또는 지연로드를 사용하여
@OneToMany (캐스케이드 = {}에서 CascadeType.ALL = FETCH FetchType.LAZY에) @JoinColumn를 (이름 = "sectionId") // 협회 컬럼 모델에 외부 키
당신은 중복 된 데이터 세트의이 문제를 해결할 수
그러나,이 멀티 파티의 컬렉션을 취득하지 않은
문제는 다음과 같습니다 해결되지 않습니다
문의 후 즉, @Fetch를 사용하여이 문제를 해결할 수
@OneToMany (캐스케이드 = {} CascadeType.ALL)에 @JoinColumn (이름 = "sectionId") // 컬럼 모델 연관 외래 키 @Fetch (FetchMode.SUBSELECT)
발행 콘솔에서 쿼리는 두 가지입니다
최대 절전 모드 : 선택 this_.id 로 id1_17_0_, ..... 에서 t_section this_ : 최대 절전 모드 를 선택 columnmode0_.id 로 , id1_7_ .... 에서 t_column의 columnmode0_ 곳 columnmode0_.sectionid = ' 1 '
다음 노트 경우와하면 변경
@OneToMany ( 캐스케이드 = {CascadeType의이. ALL } FETCH = FetchType.EAGER) @JoinColumn를 (이름 = "sectionId") // 외래 키 컬럼 모델이 연관된다 @Fetch (FetchMode.SUBSELECT)를
문은 다시 변경
절전 : 선택 this_.id 로 id1_17_0_, .... 에서 t_section this_ 하이버 네이트 : 선택 columnmode0_.sectionId 같은 sectionI7_17_1_, ....를 으로부터 t_column의 columnmode0_ 것은 어디 columnmode0_.sectionId 에서 ( 선택한 this_.id 에서 t_section의 this_ )
쿼리 효율성으로, 현재 빠른 게으른 부하 확실히로로드되지 급성으로 처리 한 다음 시간 분석기 검사를하지만, 문에서 분석까지, @ (FetchMode.SUBSELECT)를 가져 오기 위해 시간이 없습니다