سؤال

أملك:"صورة" 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');
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top