1
JPQL로 변환 된 매우 정교한 SQL 쿼리가 있습니다. 갑자기, 2.0 이전의 OPENJPA 1.2.8 버전이기 때문에 ON-Clause가 작동하지 않습니다. 그래서, 아마도 나는 Left Open Join을 사용할 수 없을 것입니다. 이 경우 가장 좋은 전략은 무엇일까요?ON-CLAUSE가 허용되지 않는 경우 JPQL에서 LEFT OUTER JOIN을 대체하는 방법은 무엇입니까?
JPQL 쿼리 :
select priceListTerm.SELLING_PRICE, priceListTerm.COMMISSION_FORMAT, priceListTerm.COMMISSION,
priceListAssignment.EFF_START_DATE, priceListAssignment.EFF_END_DATE,
priceListAssignment.PRIORITY_LEVEL,
venue.CODE, tb.HEADQUARTERS, vendor.NAME from PriceListTerm priceListTerm
JOIN PriceList priceList on priceListTerm.PRICELIST_UID = priceList.UIDPK
JOIN ProductSku productsku on priceListTerm.PRODUCTSKU_UID=productsku.UIDPK
LEFT OUTER JOIN
(PriceListAssignment priceListAssignment JOIN Venue venue on
priceListAssignment.VENUE_UID=venue.UIDPK
JOIN Vendor vendor on vendor.UIDPK=venue.VENDOR_UID)
on priceListAssignment.PRICELIST_UID = priceList.uidpk
where productsku.skuCode= :sku
and (vendor.name is null or vendor.name= :vendor)
order by priceListAssignment.PRIORITY_LEVEL;
'ON' 절은 표준 ANSI SQL이며 수년간 사용해 왔습니다. 구문이 지원되지 않으면 이상하게 보일 것입니다. 그러나, 아마도 SELECT * FROM a, b WHERE a.id = b.id' 대신에 SELECT * FROM a JOIN B ON을 사용할 수 있습니다. a.id = b.id' – SchmitzIT
감사합니다,하지만 귀하의 제안은 내부 조인을위한 –