Re: [問題] HQL兩表格比對後取值...
※ 引述《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
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
03/17 09:21, 3F
→
03/17 09:21, , 4F
03/17 09:21, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章