سؤال
أملك:"صورة" 1: العديد من "imageToTag" العديد: 1 "علامة"
أريد إصدار استعلام يقوم بإرجاع جميع الصور التي تحتوي على على الأقل العلامات [أ، ب، ج].ليس من الواضح بالنسبة لي كيف يمكن للمرء أن يصمم هذا في 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'
نصائح أخرى
وماذا عن هذا هو النقابة لغة الاستعلام
Select img from Image img where img.tag.description in ('A','B','C');
لا تنتمي إلى StackOverflow