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