hibernate 多表连接条件查询

我现在有2张有关系的表 A表列:id,name,B_id(B的外键),B表列:id,profile,sex,age。
我用hibernate 生成了两张表的 实体类 A 属性:id,name,B b(由hibernate生成关系后B的外键在实体类中则是B的对象b), 实体类B 属性:id,profile,sex,age。
他们的hibetnate 映射,框架都没有问题。
现在我要实现查询功能:查询表A的数据,但查询条件是表B中的profile='?',sex='?'....
用hibernate 的查询语句怎么实现?
哪位大虾帮帮忙。。。

你可以先查出来B,
String hql1 = "from B where profile=?,sex=? ";
String hql2 = "from A where b= ?";
List list1 = s.createQuery(hql1).list();
Query query = s.createQuery(hql2).setParameter(0, list1.get(0));
这样就可以了,不知道你是不是这个意思追问

大概意思差不多。。不过。。。最后我查询查询出来的是A的一个集合。。。用你的这个方法当查询出B之后,再传入A中是传的B集合中的第一条数据啦setParameter(0, list1.get(0));。不能够起到多条件查询的作用嘛。。。

追答

你这样profile=?,sex=? 肯定得到一个B吧,你想多条件查询A吗?
那就String hql2 = "from A where b= ? and name=?";
Query query = s.createQuery(hql2).setParameter(0, list1.get(0)).setParameter(1,name);就可以了啊

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-08-14
from A a join a.b b where b.profile = ? and b.sex = ?
join表示外连接
a 为 A 的别名
b 为 B 的别名追问

恩。。这样没有出错了。。但是。。。我不知道这样执行之后得到的是什么对象。我用泛型集合list来装查询的结果,但是却不能用A的对象来遍历这个集合,可是集合里面却有记录数,因为可以读出条数。。。

本回答被提问者采纳
第2个回答  2011-06-21
cfbv fbRFGDFGV DFGFDG孔夫子 了 发 发

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网