Ricevi un'intersezione di query in JPA?
Domanda
Ho: " immagine " 1: Molti "imageToTag" Molti: 1 " tag "
Voglio inviare una query che restituirà tutte le immagini che hanno almeno tag [a, b, c]. Non mi è chiaro come si possa modellare questo in JPQL. Potrei creare la stringa di query in modo dinamico, ma non va bene per motivi di prestazioni e sicurezza. Qualche idea?
Soluzione
In CODICE PSEUDO:
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'
Solo indovinando, ma l'equivalente in JPQL sarebbe
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'
Altri suggerimenti
Che ne dici di questo è il linguaggio di query jpa
Select img from Image img where img.tag.description in ('A','B','C');
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow