Jpa QueryBuilder Plusieurs expressions dans la clause where ne fonctionne pas

Je rencontre un problème avec la création de requêtes avec javax.la persistance.les critères.CriteriaBuilder. Je suis à l'aide de EclipseLink 2.1 et d'une base de données Oracle 10g. Lors de la construction d'une requête avec plusieurs restrictions qu'il utilise uniquement la première restriction, pas deux.

Voici mon code:

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

La requête produit est:

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 = ?)

Il semble bien, à l'exception de la clause where. Je suis dans l'attente d':

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)

Ce n'est pas grave si j'utilise la cb.et(arg1, arg2) ou pas aussi. Suis-je en train de faire quelque chose de mal? Toute aide sera appréciée.

Votre cb.isNull devrait être isNotNull. Avez-vous essayer d'ajouter plus de restrictions et/ou tenté de définir explicitement votre collaboration?

OriginalL'auteur Miller | 2011-07-04