문제
나는 "이미지"1 : 많은 "imagetotag"많은 : 1 "tag"
가지고있는 모든 이미지를 반환 할 쿼리를 발행하고 싶습니다. 적어도 태그 [A, B, C]. JPQL에서 이것을 어떻게 모델링 할 수 있는지는 확실하지 않습니다. 쿼리 문자열을 동적으로 빌드 할 수는 있지만 성능과 보안상의 이유로 나쁘다. 어떤 아이디어?
해결책
~ 안에 의사 코드 :
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'
그냥 추측하지만 JPQL의 동등한 것은
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'
다른 팁
이것이 JPA 쿼리 언어입니다
Select img from Image img where img.tag.description in ('A','B','C');
제휴하지 않습니다 StackOverflow