2014-09-22 50 views
0

我正在爲我的項目使用Spring-MVC。我有類如下:使用HQL從另一個表中檢索屬性

僞代碼:

​​

對於A類和B類數據庫中,我有「A級」爲「B類」「ID」的外交。 現在使用HQL我想從A類和B類一起檢索數據並顯示它。我有B類主鍵並可以訪問這兩個表。我應該如何繼續使用Hibernate查詢語言。

+0

看到這個http://stackoverflow.com/questions/9715149/how-to-fetch-data-dynamically-from-two-tables-using-hql-annotations-im-posti它會有所幫助你 – JavaBeigner 2014-09-22 08:03:39

+0

謝謝askkuber,這很有幫助,雖然我面對的是OnetoMany關係,我的查詢看起來像這樣:「FROM User as LEFT JOIN FETCH u.messages WHERE u.id =」+ personId。那是對的嗎? – 2014-09-22 08:12:30

+0

如果您在映射中遇到問題,可能是由於您如何生成了Hibernate Java文件?它從Hibernate工具還是手動? – JavaBeigner 2014-09-22 08:14:08

回答

0

由於您已經通過使用以下簡單查詢映射了兩個表,所以您將獲得兩個表的數據。在這裏,您將爲每個classA對象獲取一組classB的數據。

// Session session get your session object 
String hql = "FROM A"; 
Query query = session.createQuery(hql); 
List results = query.list(); 
+0

我認爲有一些混淆。可以說A類是用戶,B類是用於消息。當我給出classB(msg_id)的主鍵時,我想在數據庫中查找msg_id,在哪個行中,然後檢查user_id(外鍵),並從類User中檢索記錄。 – 2014-09-22 07:57:25

+0

你有雙向映射嗎?如果是的話,那麼你所要求的查詢就會像這樣...選擇b FROM classB b WHERE b.userId = b.classAObj.userId AND b.msgID =''; – Mahesh 2014-09-22 08:10:29

+0

沒有雙向映射,我以爲我需要稍後處理類消息,我不會加入列。是否有必要進行雙向映射? – 2014-09-22 08:15:02