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
Vous devez vous connecter pour publier un commentaire.
Oui, c'est possible, en utilisant une sous-requête:
qui est l'équivalent de la requête HQL suivante:
OriginalL'auteur JB Nizet