Jpa QueryBuilder Несколько выражений в предложении where не работают

У меня проблема с созданием запросов с помощью javax.persistence.criteria.CriteriaBuilder. Я использую EclipseLink 2.1 и базу данных Oracle 10g. При построении запроса с несколькими ограничениями он будет использовать только первое ограничение, а не оба.

Вот мой код:

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) или нет. Я делаю что-то неправильно? Любая помощь будет принята с благодарностью.

9
задан Miller 4 July 2011 в 00:09
поделиться