에 두 개의 테이블을 조인 가져올 수 있습니다 두 테이블간에 조인을하고 싶습니다. USER
및 ROLE
,이 두 테이블에 대한 POJO 결과를 어떻게 가져올 수 있습니까? ,jOOQ은 내가 예를 들어, 자동 생성 jOOQ에 내가 POJO를을 테이블의 행을 인출하려는 경우가 jOOQ에서 각각의 POJO를
답변
이는 대신 LEFT JOIN
을 사용하려는 경우, ResultQuery.fetchGroups(RecordMapper, RecordMapper)
Map<UserPojo, List<RolePojo>> result =
dsl.select(USER.fields())
.select(ROLE.fields())
.from(USER)
.join(USER_TO_ROLE).on(USER.USER_ID.eq(USER_TO_ROLE.USER_ID))
.join(ROLE).on(ROLE.ROLE_ID.eq(USER_TO_ROLE.ROLE_ID))
.where(USER.U_EMAIL.equal(email))
.fetchGroups(
// Map records first into the USER table and then into the key POJO type
r -> r.into(USER).into(UserPojo.class),
// Map records first into the ROLE table and then into the value POJO type
r -> r.into(ROLE).into(RolePojo.class)
);
주를 사용하여 하나 개의 솔루션입니다 (사용자가 반드시 어떤 역할이없는 경우에, 당신은 사용자 당 빈 목록을 얻으려면) NULL
역할을 자신의 빈 목록으로 변환해야합니다.
당신이 HashMap
같은 키에 넣어 수 있도록 여러분의 POJO들에 equals()
및 hashCode()
를 생성 활성화했는지 확인하십시오 :
<pojosEqualsAndHashCode>true</pojosEqualsAndHashCode>
답해 주셔서 감사합니다. 그러나 이것이 fetchLazy와 어떻게 조합 될 수 있는지 궁금해졌습니다. –
@Kango_V : 좋은 지적. 이 두 기능은 현재 결합 할 수 없습니다. 이 기능 요청을 만들었습니다 : https://github.com/jOOQ/jOOQ/issues/6046. 물론'Cursor' ('fetchLazy()'에서)를 Java 8'Stream'으로 변환 한 다음'collect()'를 사용하여 결과를 그룹화 할 수 있습니다 ... –
일대 다 관계 선박? Feature 테이블과 Tier 테이블이 있으며, 1 티어는 여러 기능을 가질 수 있습니다. Map
- 1. 내가 예를 들어 MySQL을
- 2. 내가 예를 들어, CSS를
- 3. 내가 예를 들어 JQuery와
- 4. 내가 가진 예를 들어
- 5. 내가 예를 들어 배열이
- 6. 내가 예를 들어 런타임
- 7. 동적으로 내가 예를 들어 각각의 재료와 제품의 수천 파이썬
- 8. 사용자는이 같은 예를 들어, POJO를 GSON
- 9. 내가 예를 들어 문자열이 MySQL을
- 10. 내가 예를 들어, 배열을 배열
- 11. JSON.Net 예를 들어 내가 무슨
- 12. 내가 파일의 .htaccess를 예를 들어
- 13. 어떻게 내가 예를 들어 원하는
- 14. 내가 예를 들어 왓슨 회화
- 15. 내가 배열을 예를 들어 배열
- 16. 예를 들어 내가 그 생각,
- 17. 내가 매크로 quasiquotes 예를 들어
- 18. 강한 원격 예를 들어 내가 예를 시도하고
- 19. 내가 예를 들어 긴 문장이있는 XML의 행이
- 20. 내가 예를 들어 수행하여 WAVEMAKER에 DojoGrid의 헤더 행을 숨길 수
- 21. 모델은 내가 만든 예를 들어 모델
- 22. 내가 예를 들어 XML을 XQuery를 재귀
- 23. 그렙/: 내가 사용하는 경우, 예를 들어, 숫자
- 24. 내가 예를 들어 이미지를 가리키는 URL입니다이 URL
- 25. 내가 여기에 예를 들어 다음과 같은거야
- 26. 예를 들어 내가 계좌 번호 마스크를 만들려고
- 27. 어떻게 예를 들어, 내가 간단한 반복자를 구축하고자
- 28. 예를 들어, 내가 클래스의 두 목록을 입력
- 29. 방법은 내가 예를 들어, 다음을 수행하는 경우
- 30. 은 내가 JSON 값 예를 들어
방법 사용자 및 역할이 연결되어 있습니까? 일대 다? 다 대일? 다 대다? –
many-to-many, 예, 테이블이 있습니다. UserToRole –