2012-11-09 111 views
4

我有以下情形:Hibernate的許多一對多HQL和Creiteria

USERS 1.1 ROLE \*.\* MODULE \*.\* INTERFACE 

單個用戶「JOHN」有一個角色和角色有多個模塊和單個模塊具有多個接口。我已經在休眠狀態下使用了annotaion,效果很好。當我得到用戶對象時,我得到角色並通過使用角色對象獲得模塊列表,並在模塊對象中獲得接口。

簡而言之,當我得到用戶時,我得到包含用戶的接口,但是如何通過HQL & Criteria得到與用戶無關的接口。例如

我通過SQL獲取接口數據IN和NOT IN,但我想通過使用HQL & Criteria獲取數據。

在此先感謝。

回答

0

IN和NOT IN也在HQL中受支持。在HQL ...

要找出屬於用戶所有接口,給用戶ID:

select ui from USERS u join u.role.module.interface ui where u.id =:userId; 

找出所有接口屬於用戶,給用戶ID:

select i from INTERFACE i where i NOT IN (select ui from USERS u join u.role.module.interface ui where u.id =:userId);