1. 程式人生 > >ORM框架Hibernate多對多關聯對映的HQL中的in條件查詢問題

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