ORM框架Hibernate多对多关联映射的HQL中的in条件查询问题

本文介绍了Hibernate提供的六种查询方法,包括HQL查询、对象化查询Criteria等,并通过具体示例展示了如何使用HQL进行集合元素和子查询结果的查询。

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

Hibernate提供了6种查询方法分别是:

HQL查询,对象化查询Criteria,动态查询DetachedCriteria,例子查询,sql查询,命名查询。

 如果单纯的使用hibernate查询数据库只需要使用其中的一项就可以完成想要实现的一般功能,但是
从一个点,让我们掌握6种方法,则提供了更多选择。每一种方法都有其适用的情况与前提。


在传递索引和元素给集合时(elements and indices函数)和传递子查询的结果集时,SQL函数any, some, all, exists, in都是被支持的:

一个用户角色(User_Role),一个菜单表(Menu),其中Menu表与user_role表有共同的角色字段

select * from menu m where m.permission in  (select role_id from user_role u where u.user_id = '13381211803')


可编写如下Hql 语句完成查询:
HQL代码 
select Blog  from Blog, Book   where Blog.author in elements(Book.authors)   and Book.id=?  


Sql代码 
   
对应的Sql如下:
from  blog, book   
where  (blog.author  in  ( select  author.authorid  from  book_author   where  book.id=book_author.bookid))   and  book.id=?  



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值