请教hibernate criteria 复合查询问题

quit326575 2008-03-20 05:23:41
hibernate3,2个数据表T_User,T_Address,使用1对多双向关联 id->uid,然后使用Critieria进行符合查询
数据为
user:

id name password
11 a a

address:
id haddress waddress uid
1 aa bb 11
2 cc dd 11

使用Criteria的复合查询

Criteria c1=se.createCriteria(User.class);
c1.add(Restrictions.eq("id", new Long(11)));
Criteria c2=c1.createCriteria("addresses");//出现问题的地方,这里已经指向子集合的查询了
c2.add(Restrictions.eq("haddress",new String("aa")));//出现问题的地方,具体的子集合属性
Iterator it=c1.list().iterator();
while(it.hasNext())
{
User user=(User)it.next();
Set set=user.getAddresses();
Iterator itt=set.iterator();
while(itt.hasNext())
{
Address ad=(Address)itt.next();
System.out.println(ad.getHaddress());
}}
系统打印出的还是,aa cc
这个就很奇怪了,因为我已经使用了c2作为复合查询的条件,并且也给了相应的参数值,应该返回的数据只有aa才对呀,而且好像子集合的条件都没有起作用一样,所以在这里请教各位老师帮我看看,问题出在哪里了,谢谢。

...全文
163 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
quit326575 2008-03-21
  • 打赏
  • 举报
回复
首先感谢你的回答,但是好像问题还是没有解决
yibunengjing 2008-03-20
  • 打赏
  • 举报
回复
Criteria c2=c1.createCriteria("addresses");//出现问题的地方,这里已经指向子集合的查询了
c2.add(Restrictions.eq("haddress",new String("aa")));//出现问题的地方,具体的子集合属性

这里出的问题,解决如下:
Criteria c2=c1.createCriteria("addresses", "ar");//出现问题的地方,这里已经指向子集合的查询了
c2.add(Restrictions.eq("ar.haddress",new String("aa")));//出现问题的地方,具体的子集合属性

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧