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

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=?  



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值