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?

È stato utile?

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
scroll top