javax.persistence.criteria.CriteriaBuilder를 사용하여 쿼리를 만드는 데 문제가 있습니다. EclipseLink 2.1과 Oracle 10g 데이터베이스를 사용하고 있습니다. 여러 제한이있는 쿼리를 작성하는 경우 첫 번째 제한 만 사용하고 두 제한은 모두 사용하지 않습니다.Jpa QueryBuilder where 절에 여러 표현식이 작동하지 않습니다.
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Assignment> query = cb.createQuery(Assignment.class);
Root<Assignment> assignment = query.from(Assignment.class);
query.where(
cb.equal(assignment.get("request"), request),
cb.isNull(assignment.get("endDate")));
return getEm().createQuery(query).getResultList();
된 생성물 쿼리는 다음과 같습니다 :
SELECT ASSX_ID, END_DATE, BEGIN_DATE, COMMENTS,
ASSX_OER_ASSIGNED_TO_ID, OER_OER_ID_ASSIGNED_BY,
ASSX_RQST_ID
FROM TARTS.ASSIGNMENT_XREF
WHERE (ASSX_RQST_ID = ?)
그것은 where 절을 제외하고 좋아 보인다
여기 내 코드입니다. 나는 기대하고있다 :
SELECT ASSX_ID, END_DATE, BEGIN_DATE, COMMENTS,
ASSX_OER_ASSIGNED_TO_ID, OER_OER_ID_ASSIGNED_BY,
ASSX_RQST_ID FROM TARTS.ASSIGNMENT_XREF
WHERE (ASSX_RQST_ID = ? AND BEGIN_DATE IS NOT NULL)
내가 cb.and (arg1, arg2)를 사용하는지 여부는 문제가되지 않는다. 내가 뭔가 잘못하고 있는거야? 어떤 도움을 주시면 감사하겠습니다.
귀하의 cb.isNull가 isNotNull해야 않습니다. 제한을 추가하려고 시도 했습니까? 명시 적으로 연결을 정의하려고 했습니까? – jelle