Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA标准:使用自定义on子句连接表_Jpa_Criteria_Openjpa - Fatal编程技术网

JPA标准:使用自定义on子句连接表

JPA标准:使用自定义on子句连接表,jpa,criteria,openjpa,Jpa,Criteria,Openjpa,我是JPA新手,我想使用API标准创建此查询: SELECT company.* FROM company LEFT OUTER JOIN address ON company.id = address.company_id AND address.postal_code = '54000' ORDER BY company.id; 在搜索和反思之后,我尝试了以下代码,这在我看来似乎是合乎逻辑的: ... CriteriaQuery<Company> query = criteri

我是JPA新手,我想使用API标准创建此查询:

SELECT company.*
FROM company
LEFT OUTER JOIN address ON company.id = address.company_id AND address.postal_code = '54000'
ORDER BY company.id;
在搜索和反思之后,我尝试了以下代码,这在我看来似乎是合乎逻辑的:

...
CriteriaQuery<Company> query = criteriaBuilder.createQuery(Company.class)
Root<Company> defCompany = query.from(Company.class);
Join joinAddresses = defCompany.join("addresses", JoinType.LEFT);
joinAddresses.on(criteriaBuilder.equal(joinAddresses.get("postalCode"), "54000"));
query.orderBy(criteriaBuilder.asc(defCompany.get("id")));
List<Company> companies = entityManager.createQuer(query)
    .getResultList();
...

我希望以前有人尝试过这样做,我想可能吧,但我找不到关于这一点的线索或问题。

JOIN ON
是JPA2.1的一部分,OpenJPA没有实现JPA2.1


使用实现JPA 2.1的JPA提供程序(例如DataNucleus JPA、EclipseLink、Hibernate),或者不使用带有连接的ON子句(或者将ON放在WHERE子句中……不完全等效)

就是这样,它适用于Hibernate 5.2.5。照顾好非常感谢:)
ERROR OpenEJB- EjbTransactionUtil.handleSystemException: org.apache.openjpa.persistence.criteria.Joins$List.on(Ljavax/persistence/criteria/Expression;)Ljavax/persistence/criteria/Join;
    java.lang.AbstractMethodError: org.apache.openjpa.persistence.criteria.Joins$List.on(Ljavax/persistence/criteria/Expression;)Ljavax/persistence/criteria/Join;