حدد من جدولين باستخدام JPQL
سؤال
أنا استخدم JPQL
لاسترداد البيانات. يمكنني الحصول على البيانات باستخدام البيان
List persons = null;
persons = em.createQuery("select p.albumName from PhotoAlbum p , Roleuser r
where r = p.userId and r.userID = 1");
الآن يمكنني الحصول على أسماء الألبوم باستخدام هذا:
int i=0;
for (i=0;i<persons.size(); i++)
{
System.out.println("Testing n "+ i +" " + persons.get(0));
}
الآن أريد أن أحصل على اسم الألبوم ومسملة صف الدور firstname
أنا أستخدم الاستعلام
persons = em.createQuery("select r.firstName , p.albumName from PhotoAlbum p ,
Roleuser r where r = p.userId and r.userID = 1").getResultList();
الآن كيف يمكنني الحصول على اسم الصفوف الأولى واسم الألبوم كأشخاص. get (0) يعيد كائن
عن طريق تشغيل الكود:
for (i=0;i<persons.size(); i++)
{
//r = (Roleuser) persons.get(i);
System.out.println("Testing n "+ i +" " + persons.get(i));
}
أنا أحصل على هذا:
Testing n 0 [Ljava.lang.Object;@4edb4077
INFO: Testing n 1 [Ljava.lang.Object;@1c656d13
INFO: Testing n 2 [Ljava.lang.Object;@46dc08f5
INFO: Testing n 3 [Ljava.lang.Object;@654c0a43
كيف يمكنني تعيين persons.get(0)
والحصول على firstname
و albumname
?
المحلول
الآن كيف تحصل على صفوف FirstName و Albumname كأشخاص. get (0) يعيد كائن
استفسارات مع متعددة select_expressions في جملة SELECT إرجاع A Object[]
(أو أ List
من Object[]
). من مواصفات JPA:
4.8.1 نوع النتيجة من جملة SELECT
نوع نتيجة الاستعلام المحددة بواسطة جملة SELECT من الاستعلام هو نوع مخطط مجردة الكيان ، أو نوع حقل الحالة ، أو نتيجة وظيفة إجمالية ، أو نتيجة عملية البناء ، أو بعض تسلسلها.
يتم تعريف نوع النتيجة للفقرة المحددة بواسطة أنواع النتائج من select_expressions الواردة في ذلك. عندما تكون متعددة select_expressions يتم استخدامها في جملة SELECT ، نتيجة الاستعلام من النوع
Object[]
, والعناصر في هذه النتيجة تتوافق من أجل ترتيب مواصفاتها في جملة SELEC select_expressions.
لذلك في حالتك ، ربما تريد شيئًا كهذا:
for (i=0;i<persons.size(); i++) {
//r = (Roleuser) persons.get(i);
System.out.println("Testing n " + i + " " + persons.get(i)[0] + ", " +
persons.get(i)[1]);
}
لاحظ أن تحديد انضمام داخلي عن طريق استخدام منتج ديكارت في البند من الفقرة وشرط انضمام في الفقرة حيث يكون أقل نموذجية من تحديد صلة صريحة عبر علاقات الكيان (باستخدام [LEFT [OUTER] | INNER ] JOIN
بناء الجملة). انظر القسم بأكمله 4.4.5 ينضم في المواصفات.
مراجع
- مواصفات JPA 1.0
- القسم 4.8.1 "نوع نتيجة شرط تحديد"
- القسم 4.8.2 "تعبيرات مُنشأة في جملة SELECT"
- القسم 4.4.5 "ينضم"