2016-12-30 1 views
0

내가 JPA에 새로 온 사람에 대한 정의와 테이블을 가입하고 난 API 기준을 사용하여이 쿼리를 만들려면 : 검색 및 감상 후JPA 기준 : 절

SELECT company.* 
FROM company 
LEFT OUTER JOIN address ON company.id = address.company_id AND address.postal_code = '54000' 
ORDER BY company.id; 

을, 나는 논리적 인 것 같다이 코드를 시도 나 :

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; 

가 나는 쪽을 생각, 누군가가 전에이 작업을 수행하려고 희망 :

... 
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(); 
... 

그러나는 OpenJPA이 오류가 발생합니다 robably하지만 나는 이것에 대해 스레드 또는 질문을 찾을 수 없습니다.

답변

1

JOIN ON은 JPA 2.1의 일부이며 OpenJPA는 JPA 2.1을 구현하지 않습니다.

는 JPA 2.1 구현하는 JPA 제공자 (예 : DataNucleus JPA,는 EclipseLink, 최대 절전 모드)를 사용하거나 조인 절에서 사용하지 않는 (또는 명확하게 ... 아주 동일하지 WHERE 절에 ON을 넣어)

+0

그것은 Hibernate 5.2.5에서 작동한다. https://hibernate.atlassian.net/browse/HHH-2772를주의하십시오. 고마워요 :) –