매우 단순한 pure SQL 문을 criteria 쿼리로 다시 작성할 때 막혔습니다. 기본적으로 나는 기준. 가장 큰 두 개를 선택하십시오.
CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery();
Root<T> fromT = cq.from(T.class);
Root<S> fromS = cq.from(S.class);
cq.where(cb.equal(fromT.get("id), fromS.get("id"));
cq.select(); // <---- what to put here.
getEntityManager().createQuery(cq).getResultList();
내가 큰 방법을 발견
을 시도
select max(T.value, S.value) from T, S where T.id = S.id
내 쿼리를 단순화 할 수 있지만, 수평 비교 (열에서 값)와 나는 같은 행에서 두 값을 비교하고 싶습니다 그러나 다른 칼럼과 가장 큰 가치를 가진 하나를 얻으십시오.
내 마음에 오는 유일한 해결책은 결과를 가져 와서 '수동으로'정렬하는 것이지만 성능에 영향을 줄 수 있습니다.
괜찮 았지만 hbn 기준으로 코딩하는 방법은 무엇입니까? –
글쎄, CriteriaBuilder 클래스는 [case statements를 지원합니다] (http://stackoverflow.com/a/5601260/2400222) [절을 표현식으로 사용할 수 있습니다] (http://wiki.eclipse.org/EclipseLink/) 개발/JPA_2.0/case_expressions). 죄송합니다. 귀하의 질문을 더 철저히 읽었을 지 모르지만이 자료가 도움이되기를 바랍니다. – Zec