Hibernate Critères: ajouter des restrictions supplémentaires à des Restrictions.isEmpty

J'ai créé une mise en veille prolongée (3.5) Critères de requête:

Criteria criteria = db.getSession().createCriteria(Vendor.class);
criteria.add(Restrictions.isEmpty("models"));

Lorsqu'il est exécuté avec des Critères.liste, Hibernate génère le SQL suivant (simplifié pour des raisons de lisibilité):

SELECT this_.*
FROM   VENDOR this_
       left outer join MODEL models1_
         ON this_.id = models1_.VENDOR_ID
WHERE  NOT EXISTS (SELECT 1
                   FROM   MODEL
                   WHERE  this_.id = VENDOR_ID)

Ce que je voudrais faire est d'ajouter une restriction à l'intérieur de l' "n'existe pas" de la partie afin que le SQL de la requête devrait ressembler à ceci

SELECT this_.* FROM VENDOR this_
left outer join MODEL models1_
         ON this_.id = models1_.VENDOR_ID
WHERE
NOT EXISTS (SELECT 1
                             FROM   MODEL
                             WHERE  this_.id = VENDOR_ID AND DEPRECATED = 0 )

Est-ce possible en utilisant Hibernate Critères de l'API et si oui, comment? Ou est-il une autre possibilité pour obtenir le même résultat (mais toujours en utilisant les Critères de l'API)?

OriginalL'auteur simon | 2012-05-11