hibernate 多表连接条件查询
我现在有2张有关系的表A表列:id,name,B_id(B的外键),B表列:id,profile,sex,age。我用hibernate生成了两张表的实体类A属性:id,...
我现在有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 的查询语句怎么实现?
哪位大虾帮帮忙。。。 展开
我用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));
这样就可以了,不知道你是不是这个意思
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);就可以了啊
展开全部
from A a join a.b b where b.profile = ? and b.sex = ?
join表示外连接
a 为 A 的别名
b 为 B 的别名
join表示外连接
a 为 A 的别名
b 为 B 的别名
追问
恩。。这样没有出错了。。但是。。。我不知道这样执行之后得到的是什么对象。我用泛型集合list来装查询的结果,但是却不能用A的对象来遍历这个集合,可是集合里面却有记录数,因为可以读出条数。。。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-06-21
展开全部
cfbv fbRFGDFGV DFGFDG孔夫子 了 发 发
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询