ترجمة الخارجي انضم إلى SQL استعلام إلى الفاصوليا EJB

StackOverflow https://stackoverflow.com/questions/1734251

  •  20-09-2019
  •  | 
  •  

سؤال

أنا جديد في EJB ومحاولة الحصول على رأسي حول ترجمة مفاهيم SQL إلى حبوب كيان EJB.

لنفترض أن لدي طاولتين: الناس (معرف، الاسم)، اتصل (PID، Phone_Number). إذا كنت أرغب في الحصول على قائمة بجميع الأشخاص حول ما إذا كان لديهم هاتف هاتفي أم لا، في فول جلسة EJB الخاصة بي، فأنا ببساطة إصدار استعلام SQL عبر JDBC مثل:

SELECT PEOPLE.name, CONTACT.phone_number 
FROM PEOPLE 
LEFT JOIN CONTACT ON PEOPLE.id = CONTACT.pid

بدلا من استخدام SQL / JDBC، أرغب الآن في استخدام حبوب كيان EJB. لذلك أقوم بإنشاء فئات فاصولي كيان EJB3 المقابلة لطاولاتي.

لذلك يمكنني الوصول إلى كل من فئات الكيان من فول جلستي ولم أعد ترغب في الوصول إلى جداول قاعدة البيانات الخاصة بي مباشرة عبر SQL / JDBC من فول جلستي. أريد فقط استخدام حبوب كولي وقدرات JPA. ما هو تصميم EJB المناسب بحيث في فول جلستي، أحصل على نفس النتائج مثل استعلام SQL الخاص بي؟

من غير الواضح عن كيفية استخدام فئات حبة كيان EJB لإنتاج نفس النتائج مثل استعلام الانضمام الخارجي SQL. مساعدة.

هل كانت مفيدة؟

المحلول

أولا، إنشاء كيانات JPA اثنين، شيء من هذا القبيل People:

@Entity
@Table( name="PEOPLE" )
public class People {

    @Id @Column
    private Long id;

    @Column
    private String name;

    @OneToOne
    @JoinColumn( name="pid" )
    private Contact contact;

    // getters and setters
}

ولل Contact:

@Entity
@Table( name="CONTACT" )
public class Contact {

    @Id @Column
    private Long pid;

    @Column
    private String phoneNumber;

    // getters and setters
}

ثم، لتوليد استعلام الانضمام الخارجي باستخدام JPQL:

SELECT p FROM People p LEFT JOIN p.contact c
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top