有两张表,items和orders;多对一关系;
items中字段:id,name,orderid(外键);
orders中字段:id,name;
各字段类型和对应的实体类具体样子就不赘述了。
现在要查满足以下条件的记录条数:
item.name like '%i%',且item.orderid关联的orders的name like '%a%';
用Query查询所有的记录我会查的,hql="from Item i join fetch i.order o where i.name like '%i%' and o.name like '%a%'";
但是怎么查询满足要求的记录条数?我在前面加"select count(*) "来查询的话会报异常。
我想过先查出所有记录:List list=query.list();return list.size();
但很明显,当满足条件的记录条数相当多时,这种方法效率非常低下,有没有更好的办法?
请高手解答,谢谢!!!
简单地说就是这样一个SQL查询用hibernate该怎么查:
select count ( * )
from items i
inner join orders o
on i.orderid = o.id
where i.name like 'i' and o.name like 'a';
中文描述为:将items 表和orders 表按条件 items.orderid=order.id内连接。
查 items.name 包含'i' orders.name包含'a'的记录条数。
Hibernate连表查询怎么查满足条件的记录条数(分别用Query和Criteria)
答案:3 悬赏:50
解决时间 2021-04-09 04:29
- 提问者网友:霸气大叔
- 2021-04-08 23:22
最佳答案
- 二级知识专家网友:而你却相形见绌
- 2021-04-09 00:28
想用了hibernate。又写sql 就不能用query了
session.createSQLQuery("......");就不会报错了
session.createSQLQuery("......");就不会报错了
全部回答
- 1楼网友:白日梦制造商
- 2021-04-09 01:57
你可以试试用二级缓存
或者分页吧。。。。
- 2楼网友:孤伤未赏
- 2021-04-09 01:23
select count(*) from items i ,orders o where i.orderid=o.id and
(类型中字段对应的属性,有时用自动生成的orderid可能会是order,主要看你的类中是如何对该外键属性进行命名) i.name like '%i%' and o.name like '%a%'";
返回的值是一个object,需要进行处理,如何处理相信你能解决,如果不行可以给我留言,最好附上你需要处理块的代码.
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |