2010-09-07 5 views
2

OK .. Je suis coincé.Convertir JQL en CriteriaBuilder

quelqu'un peut me aider convertir cette JQL

SELECT FROM Asset WHERE? 1 IN (SELECT c DE a.categories c)

catégories est une collection de Enum. J'ai de la difficulté à convertir la partie WHERE. Je ne comprends pas pourquoi la méthode CriteriaBuilder.IN ne reçoit qu'une seule valeur.

Quelqu'un peut-il m'aider?

Répondre

4

Essayez quelque chose comme:

 CriteriaBuilder qb = em.getCriteriaBuilder(); 
     CriteriaQuery<Asset> cq = qb.createQuery(Asset.class); 
     Root<Asset> asset = cq.from(Asset.class); 
     cq.where(qb.parameter(Category.class, "category").in(asset.<Collection<?>>get("categories")))); 
     Query query = em.createQuery(cq); 
+0

semble que le bug est avec Hibernate. Avec OpenJPA cela fonctionne aussi en utilisant: asset.get ("categories"). In (category) – nanda