Re: [問題] HQL兩表格比對後取值...

看板Programming作者 (Alien)時間14年前 (2011/03/10 00:33), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《powerjj (ya)》之銘言: : 正開始學HQL,遇到一個應該很基礎的問題,但是一點頭緒都沒有= = : 我用workshop將兩個表格People Product映射成兩個Class : 接著對主管的教學依樣畫葫蘆的程式碼如下: : SessionFactory sf = new : Configuration().configure("hibernate.cfg.xml").buildSe\ : ssionFactory(); : Session session = sf.openSession(); : List<People> peopleList = session.createQuery("from People").list(); : 這樣就可以把People中所有的值存成List的格式peopleList了 : 但是,我還有其他數值要從Product中取出, : 如果照樣用上面的方法是可以做出一個productList, : 但是我要的是People中的name和Product的Id兩值而已,並且要存在同一個List : 難道我要用java對兩個List逐一比對再建立一個新的List嗎? : 但我希望可以在HQL從資料庫取值時就直接完成了, : 因為用SQL也只是一行就完成的動作... : 拜託對HQL有所研究的高手能幫忙一下,萬分感謝!! Product 與 People 的關係有映射好嗎? 不清楚你的設計,我隨便掰個例子,假設 Product 有個 designer 的 attribute, 指向 People e.g. class Product { private People designer; } 那麼你想拿所有product id 及其 designer 的名字出來的話: select p.id, p.designer.name from Product return 出來的是 List<List<Object>>, 每個 List<Object> 有兩個elements, 分別是 id 及 designer name. 如果你想放到一個 value obj (假設叫 ProductSummary), 而 ProductSummary 有適當 constructor: select new ProductSummary(p.id, p.designer.name) from Product 就會直接取得 List<ProductSummary> 補充一下:你要問 HQL,最重要是你要能提供 entity 的大概 關係及映射,大家才能教你怎麼做。等如你問 SQL, 也要告訴 別人 tables 裡面要什麼 field, 哪個是Foreign Key etc 才行吧 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 183.179.61.91 ※ 編輯: adrianshum 來自: 183.179.61.91 (03/10 00:36)

03/10 00:38, , 1F
看到 HQL 只 select 兩個 field 的問題
03/10 00:38, 1F

03/10 00:38, , 2F
又令我想起某版裡的經典笑話
03/10 00:38, 2F
※ 編輯: adrianshum 來自: 183.179.61.91 (03/10 00:55)

03/17 09:21, , 3F
抱歉因為我之前對Hibernate的這種做法還搞
03/17 09:21, 3F

03/17 09:21, , 4F
不清楚= = 但多謝你的說明!
03/17 09:21, 4F
文章代碼(AID): #1DTwlA4a (Programming)
討論串 (同標題文章)
文章代碼(AID): #1DTwlA4a (Programming)