JPA-다 대다 관계를 쿼리하는 동안 불필요한 조인을 방지하는 방법

루크 657

단순한 다 대다 관계로 결합 된 엔터티 Product 및 Category가 있습니다. 단일 카테고리로 필터링 된 페이지가 매겨진 제품 목록을 얻고 싶습니다. 다음과 유사한 Spring Data JPA자동 메서드 또는 JPQL쿼리 메서드 를 작성하려고합니다 SQL.

select [...] FROM ProductToCategory ptc INNER JOIN Product p ON ptc.product_id=p.id WHERE ptc.category_id=?  LIMIT ? OFFSET ?

때문에 ProductToCategory테이블이 아닌 참여 JPA entity와 나는 그것을 참조 할 수 없습니다 JPQL, 내가했다 가지고 올 수있는 가장 가까운 일을 :

@Query("SELECT p FROM Category c INNER JOIN c.products p WHERE c=:category")
Page<Product> findByCategories(@Param("category") Category category, Pageable pageable);

그러나 그 결과는 SQL중복이 분류 테이블과 조인 생산하고 대신의 범주에,이 where 절을 적용 idProductToCategory테이블. 네이티브에 의존하지 않고 이것을 할 수있는 방법이 SQL있습니까?

앨런 헤이

내가 볼 수있는 유일한 방법은 엔터티를 조인 테이블에 매핑하고 다 대다 Product <> Category를 Product 및 Category 모두에서이 새 엔터티를 가리키는 일대 다 관계로 바꾸는 것입니다.

이러한 변경은 실제로 Hibernate 모범 사례와 일치합니다.

https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/best-practices.html

이국적인 연관 매핑을 사용하지 마십시오 . 실제 다 대다 연관에 대한 실제 테스트 케이스는 드뭅니다. 대부분의 경우 "링크 테이블"에 저장된 추가 정보가 필요합니다. 이 경우 중간 링크 클래스에 대해 두 개의 일대 다 연관을 사용하는 것이 훨씬 좋습니다. 실제로 대부분의 연결은 일대 다 및 다 대일입니다. 따라서 다른 연결 스타일을 사용할 때는 신중하게 진행해야합니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

다 대다 조인 테이블을 쿼리하는 동안 JPA 최대 절전 모드 문제

분류에서Dev

dialogflow에서 필요한 슬롯을 채우는 동안 다른 쿼리를 트리거하는 방법이 있습니까?

분류에서Dev

Laravel 5에서 Eloquent 관계에 대한 하위 쿼리를 포함하는 조인을 수행하는 방법

분류에서Dev

기능 테이블 (AND 조건)을 사용하여 다 대다 관계를 쿼리하는 방법

분류에서Dev

Django-다중 관계 구조를 쿼리하고 표시하는 방법

분류에서Dev

외부 통제를 참조하는 방법에 대한 몇 가지 제안이 필요합니다.

분류에서Dev

Django에서 다 대다 관계를 필터링하는 방법

분류에서Dev

Entity Framework를 사용하여 다 대다 관계를 쿼리하는 방법

분류에서Dev

Postgres에서 다 대다 관계에 대해 관련되지 않은 항목을 선택하는 SQL 쿼리를 작성하는 방법은 무엇입니까?

분류에서Dev

쿼리를 다른 쿼리에 조인하는 방법

분류에서Dev

고객이 각 지역을 방문한 횟수를 계산하는 쿼리가 필요합니다.

분류에서Dev

트리거를 사용하지 않고 일대 다 관계에 대한 추가 제약 조건을 설정하는 방법

분류에서Dev

Spring과 Hibernate에서 일대 다 관계에서 리소스를 업데이트하는 동안 null 값을 제거하는 방법

분류에서Dev

다 대다 관계를 쿼리하는 방법은 무엇입니까?

분류에서Dev

JPA와 최대 절전 모드를 사용하는 경우 슈퍼 클래스 쿼리에서 다형성을 방지하는 방법

분류에서Dev

다 대다 관계에서 테이블을 조인하는 방법

분류에서Dev

조인을 사용하여 하위 쿼리를 다시 작성하는 방법

분류에서Dev

다른 열 값에 대해 동일한 SQL 쿼리를 반복하는 방법

분류에서Dev

동일한 다른 유형에 대한 다른 관계가있는 유형에서 EF 다 대다 관계를 정의하는 방법

분류에서Dev

캔버스 요소에 그려진 개체 다각형에 대한 관계형 인덱스를 설정하는 확실한 방법이 필요합니다.

분류에서Dev

다 대다 관계와 관련된 하나의 조치로 여러 엔티티를 저장하는 방법 [Spring Boot 2, JPA, Hibernate, PostgreSQL]

분류에서Dev

Entity Framework를 사용하여 다 대다 관계 테이블에 대한 항목을 추가하는 방법

분류에서Dev

포스트 그레스에서 "결과가 쿼리에 의해 반환되지 않았다"해결 방법 예외 JPA를 사용하는 동안

분류에서Dev

동일한 열 NHibernate를 참조하는 두 대 다 관계

분류에서Dev

이 두 쿼리가 동일한 결과를 반환하지만 다른 조인을 사용하는 방법은 무엇입니까? (암시 적 쿼리와 명시 적 쿼리)

분류에서Dev

C # Linq에서 일대 다 관계 쿼리를 작성하는 방법

분류에서Dev

다른 컬렉션에 대한 쿼리를 만드는 방법 (관계없이)?

분류에서Dev

HAML은 루프를 사용하는 동안 불필요한 공간을 만듭니다.

분류에서Dev

Elasticsearch 다시 인덱싱하는 동안 필드를 제거하는 방법

Related 관련 기사

  1. 1

    다 대다 조인 테이블을 쿼리하는 동안 JPA 최대 절전 모드 문제

  2. 2

    dialogflow에서 필요한 슬롯을 채우는 동안 다른 쿼리를 트리거하는 방법이 있습니까?

  3. 3

    Laravel 5에서 Eloquent 관계에 대한 하위 쿼리를 포함하는 조인을 수행하는 방법

  4. 4

    기능 테이블 (AND 조건)을 사용하여 다 대다 관계를 쿼리하는 방법

  5. 5

    Django-다중 관계 구조를 쿼리하고 표시하는 방법

  6. 6

    외부 통제를 참조하는 방법에 대한 몇 가지 제안이 필요합니다.

  7. 7

    Django에서 다 대다 관계를 필터링하는 방법

  8. 8

    Entity Framework를 사용하여 다 대다 관계를 쿼리하는 방법

  9. 9

    Postgres에서 다 대다 관계에 대해 관련되지 않은 항목을 선택하는 SQL 쿼리를 작성하는 방법은 무엇입니까?

  10. 10

    쿼리를 다른 쿼리에 조인하는 방법

  11. 11

    고객이 각 지역을 방문한 횟수를 계산하는 쿼리가 필요합니다.

  12. 12

    트리거를 사용하지 않고 일대 다 관계에 대한 추가 제약 조건을 설정하는 방법

  13. 13

    Spring과 Hibernate에서 일대 다 관계에서 리소스를 업데이트하는 동안 null 값을 제거하는 방법

  14. 14

    다 대다 관계를 쿼리하는 방법은 무엇입니까?

  15. 15

    JPA와 최대 절전 모드를 사용하는 경우 슈퍼 클래스 쿼리에서 다형성을 방지하는 방법

  16. 16

    다 대다 관계에서 테이블을 조인하는 방법

  17. 17

    조인을 사용하여 하위 쿼리를 다시 작성하는 방법

  18. 18

    다른 열 값에 대해 동일한 SQL 쿼리를 반복하는 방법

  19. 19

    동일한 다른 유형에 대한 다른 관계가있는 유형에서 EF 다 대다 관계를 정의하는 방법

  20. 20

    캔버스 요소에 그려진 개체 다각형에 대한 관계형 인덱스를 설정하는 확실한 방법이 필요합니다.

  21. 21

    다 대다 관계와 관련된 하나의 조치로 여러 엔티티를 저장하는 방법 [Spring Boot 2, JPA, Hibernate, PostgreSQL]

  22. 22

    Entity Framework를 사용하여 다 대다 관계 테이블에 대한 항목을 추가하는 방법

  23. 23

    포스트 그레스에서 "결과가 쿼리에 의해 반환되지 않았다"해결 방법 예외 JPA를 사용하는 동안

  24. 24

    동일한 열 NHibernate를 참조하는 두 대 다 관계

  25. 25

    이 두 쿼리가 동일한 결과를 반환하지만 다른 조인을 사용하는 방법은 무엇입니까? (암시 적 쿼리와 명시 적 쿼리)

  26. 26

    C # Linq에서 일대 다 관계 쿼리를 작성하는 방법

  27. 27

    다른 컬렉션에 대한 쿼리를 만드는 방법 (관계없이)?

  28. 28

    HAML은 루프를 사용하는 동안 불필요한 공간을 만듭니다.

  29. 29

    Elasticsearch 다시 인덱싱하는 동안 필드를 제거하는 방법

뜨겁다태그

보관