سؤال

من الممكن القيام بما يعادل استعلام SQL في JPQL؟

SELECT * 
 FROM COUNTRIES c WHERE COUNTRY_ID IN (
  SELECT DISTINCT COUNTRY_ID 
   FROM PORTS p 
   WHERE p.COUNTRY_ID = c.COUNTRY_ID AND STATE = 'A'
) 
هل كانت مفيدة؟

المحلول

تحتاج إلى اختباره مع في و مسمة فرعية نظرًا لأن كلاهما يعملان في JPQL (وفقًا لما ذكره بناء الجملة ، فإنهما يعملان معًا). يمكنك أيضا أن تنظر إلى عضو في التعبيرات.

ولكن هناك نهج أفضل في رأيي. تسمى مثل هذه الاستعلامات السحر الفرعي المرتبط ويمكن للمرء دائمًا إعادة كتابةها باستخدام:

SELECT * FROM COUNTRIES c WHERE 
EXISTS (
        SELECT 'found' FROM PORTS p 
        WHERE p.COUNTRY_ID = c.COUNTRY_ID AND STATE = 'A'
) 

JPQL يدعم موجود مع الفائزين.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top