1
我是新來的EJB,並試圖讓我的頭將SQL概念翻譯成EJB實體bean。將外部連接SQL查詢翻譯成EJB實體bean
假設我有兩個表:PEOPLE(id,name),CONTACT(pid,phone_number)。如果我想所有的人的名單,他們是否擁有手機#秒,在我的EJB會話bean我只需發出通過JDBC SQL查詢,如:
SELECT PEOPLE.name, CONTACT.phone_number
FROM PEOPLE
LEFT JOIN CONTACT ON PEOPLE.id = CONTACT.pid
而不是使用SQL/JDBC的,我現在想要使用EJB實體bean。所以我爲我的表創建相應的EJB3實體bean類。
所以我現在都可以訪問兩個實體類從我的會話bean,我不再希望直接從我的會話bean訪問我的數據庫表通過SQL/JDBC。我只想使用我的實體bean和JPA的功能。什麼是正確的EJB設計,以便在我的會話bean中獲得與我的SQL查詢相同的結果?
我不清楚如何使用EJB實體bean類來產生與我的SQL外部連接查詢相同的結果。幫幫我。
謝謝。作爲後續行動,這可能嗎? SELECT p.name,c.phoneNumber FROM People p LEFT JOIN p.contact c 如果是這樣,產生的對象類型是什麼?我正在尋找如何做到這一點的樣本,但如果你有鏈接,將不勝感激。謝謝。 – Sajee 2009-11-14 19:33:30
您必須創建一個自定義對象來保存該查詢的結果,並像修改查詢那樣'SELECT NEW my.package.MyHolder(p.name,C.phoneNumber)FROM ...'。有關更詳細的示例,請參閱http://www.oracle.com/technology/pub/articles/vasiliev-jpql.html。 – 2009-11-14 20:06:40
假設聯繫人表使用列名稱Id而不是Pid。人體定義如何變化?這裏不會有衝突:@JoinColumn(name =「id」)?現在id被使用兩次。什麼是解決方法? – Sajee 2009-11-15 19:23:32