Mysql 如果不允许ON子句,如何在JPQL中替换左外连接?

Mysql 如果不允许ON子句,如何在JPQL中替换左外连接?,mysql,sql,openjpa,outer-join,Mysql,Sql,Openjpa,Outer Join,我已经将非常复杂的SQL查询转换为JPQL。突然,我发现由于我使用的是2.0之前的OpenJPA1.2.8版本,on子句不起作用。所以,很可能我不能使用Left-Open-Join。在这种情况下,什么是最好的策略 JPQL查询: select priceListTerm.SELLING_PRICE, priceListTerm.COMMISSION_FORMAT, priceListTerm.COMMISSION, priceListAssignment.EFF_START_DATE, pr

我已经将非常复杂的SQL查询转换为JPQL。突然,我发现由于我使用的是2.0之前的OpenJPA1.2.8版本,on子句不起作用。所以,很可能我不能使用Left-Open-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;

我最终使用了本机查询。因此,有效的代码块如下所示:

...........
query = entityManager.createNativeQuery(GET_LOGICAL_SQL);

List<Object[]> list  = query.setParameter(1, skuCode).setParameter(2, vendorName).getResultList();

for (Object[] objects : list){
    BigDecimal sellingPrice = (BigDecimal)objects[0];
...........
。。。。。。。。。。。
query=entityManager.createNativeQuery(获取逻辑SQL);
List List=query.setParameter(1,skuCode).setParameter(2,vendorName).getResultList();
对于(对象[]对象:列表){
BigDecimal sellingPrice=(BigDecimal)对象[0];
...........

ON子句是标准的ANSI SQL,已经存在多年了。如果不支持这种语法,那就太奇怪了。但是,您可以(可能)使用
SELECT*FROM a,b其中a.id=b.id
而不是
SELECT*FROM a JOIN b ON a.id=b.id
谢谢,但您的建议是内部连接