作者adrianshum (Alien)
看板Programming
标题Re: [问题] HQL两表格比对後取值...
时间Thu Mar 10 00:33:12 2011
※ 引述《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)
1F:→ adrianshum:看到 HQL 只 select 两个 field 的问题 183.179.61.91 03/10 00:38
2F:→ adrianshum:又令我想起某版里的经典笑话 183.179.61.91 03/10 00:38
※ 编辑: adrianshum 来自: 183.179.61.91 (03/10 00:55)
3F:推 powerjj:抱歉因为我之前对Hibernate的这种做法还搞 114.33.8.54 03/17 09:21
4F:→ powerjj:不清楚= = 但多谢你的说明! 114.33.8.54 03/17 09:21