常用的一些HQL查询语句详解(2)

本文介绍HQL查询语言的基础用法,包括多表关联查询、条件筛选及聚合函数的应用等,适用于初学者掌握HQL的基本语法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)根据c.name属性查询表category中的id、name、并进行倒序排序
Query q = session.createQuery("select c.id,c.name from Category c order by c.name desc");
List<Object[]> categories = (List<Object[]>)q.list();
(2)Topic与Category是多对一的关联关系,查询与Topic关联的category表中的id=1的所有Topic
Query q = session.createQuery("from Topic t where t.category.id = 1");
List<Topic> topics = (List<Topic>)q.list();
注意:关联 fetch type 的设置
(3)Topic与Category是多对一关联关系,Msg与Topic也是多对一关联关系。根据category.id=1来查询Msg。
Query q = session.createQuery("from Msg m where m.topic.category.id = 1");
(4)建一个与Msg相似的表MsgInfo来‘暂时’存放Msg表中取出来的内容
Query q = session.createQuery("select new com.hibernate.MsgInfo(m.id, m.cont, m.topic.title, m.topic.category.name) from Msg");
(5)解释:select t.title, c.name from Topic t join t.category c
为何不直接写Category c ?
原因是:Topic类中可能存在Category类的多个成员变量,各个成员变量的关联关系可能不同,所以需要明确指定区中一个成员变量。
(6)select count(*)返回所有满足条件的记录数
Query q = session.createQuery("select count(*) from Msg m");
(7)select max(m.id), min(m.id), avg(m.id), sum(m.id) from Msg m
详解:max:取出id最大值 --min:取出id最小值--avg:取出id的平均值--sum:取出所有id值得和。
(8)from Msg m where m.id between 3 and 5
详解:取出id在3和5之间的内容
(9)from Msg m where m.id in (3,4, 5)
详解:取出id为3、4、5的内容
(10)from Msg m where m.cont is not null
详解:取出Msg表中的cont值不为空的内容。
(11)from Msg m where m.cont is  null
详解:取出Msg表中的cont值为空的内容。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值