courier_routes 테이블에 위치 테이블에 대한 두 개의 외래 키가 있습니다. courier_routes 테이블의 열은 start_location_id 및 end_location_id입니다. (저는 Oracle을 사용하고 있습니다)Distinct JPA의 여러 열 이상
courier_routes 테이블에서 택배가 있었던 모든 별개의 위치를 찾고 싶습니다.
이 예|id |start_location_id| end_location_id|...
|1|1|2|
|2|1|3|
|3|4|5|
|4|2|1|
I 작동 IDS 1 2 3 4 5
내 SQL을 다시 얻으려면 내가 JPA에이를 번역 할
SELECT loc FROM (
SELECT start_location_id AS loc FROM courier_routes
UNION
SELECT end_location_id AS loc FROM courier_routes);
입니다을 고려하십시오. Hibernate는 유니온을 지원하지 않으므로 하위 쿼리에 대해 생각했습니다. 이 문제는 성능에 영향을 줄 수 있다는 점에서 문제가됩니다.
나는 같은 것을 생각하고 있었는데 (의사 코드 ...)
SELECT id FROM locations where id in (
(SELECT start_location_id FROM courier_routes)
OR
(SELECT end_location_id FROM courier_routes));
는 쉬운 방법이 있나요? 이 테이블은 커질 것이므로 하위 쿼리를 사용하고 싶지는 않습니다.
두 개의 개별 쿼리 결과를 세트에 추가하여 Java에서 공용체를 수행해야합니까?
감사
나는이 솔루션들이 취하는 (네이티브 SQL 쿼리를 사용하는 솔루션을 포함하여) 각각의 시간을 측정하고, 최선의 것을 선택합니다. 마지막 제안 솔루션 (두 개의 쿼리)은 오라클이 두 개의 하위 쿼리를 포함하는 쿼리로 자체적으로 수행하는 것입니다. –