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