2008-12-31 6 views
1

J'ai: "image" 1: Beaucoup "imageToTag" Many: 1 "tag"Obtention d'une intersection de requêtes dans JPA?

Je veux lancer une requête qui renverra toutes les images qui ont au moins balises [a, b, c]. Ce n'est pas clair pour moi comment on peut modéliser ça en JPQL. Je pourrais construire la chaîne de requête dynamiquement mais c'est mauvais pour des raisons de performance et de sécurité. Des idées?

Répondre

2

En PSEUDO CODE:

SELECT * FROM IMAGES 
    INNER JOIN IMAGETAGS A 
    ON IMAGE.ID = A.IMAGEID AND A.TAGID = 'A' 
    INNER JOIN IMAGETAGS B 
    ON IMAGE.ID = B.IMAGEID AND B.TAGID = 'B' 
    INNER JOIN IMAGETAGS C 
    ON IMAGE.ID = C.IMAGEID AND C.TAGID = 'C' 

qu'émettre des conjectures, mais l'équivalent en JPQL serait

Select img from Image img 
JOIN img.tag ta 
JOIN img.tag tb 
JOIN img.tag tc 
    WHERE ta.description = 'A' and tb.description = 'B' and tc.description = 'C' 
0

Comment ce sujet est langage de requête JPA

Select img from Image img where img.tag.description in ('A','B','C'); 
+0

Cela renverra toutes les images avec une description de "A ou B ou C", pas "A et B et C" – Gili