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



 

你可能感兴趣的:(Framework)