2017-06-30 5 views
1

私が作成したこの例のSQLクエリは、オブジェクトを持つすべてのREPORTオブジェクトを現在のユーザも持っています。だから、グループにレポートを結びつける多くのグループがあり、ユーザーは多数のグループを持つことができます。そのうちの1つは、ユーザーがレポートを表示できるように一致する必要があります。2つのリストがHibernateでオブジェクトを共有しているかどうかを調べる方法

Query reportQuery = entityManager.createQuery 
    ("select distinct rep from Report rep 
         join rep.reportPermissions per 
         join per.userGroups gr 
         join gr.users u 
         where u.id = :userId and rep.type = 'GENERAL'"); 
reportQuery.setParameter("userId" , user.getId()); 

例マッピング(HQLで使用されている名称、およびマッピングに名前をfileds):

私はそれのようなものでなければなりませんちょうど
SELECT * FROM REPORT r 
JOIN REPORT_PERMISSION rp 
    on r.id = rp.report_id and rp.user_group_id in 
     (SELECT l.user_group_id FROM USER_GROUP_LINK l where l.user_id = 2) 
where r.type = 'GENERAL'; 

答えて

0

HQL

でこれを書くのかどうかはわかりません

rep.reportPermissions - コレクション< ReportPermission>レポートでreportPermissions。

per.userGroups - コレクション<のUserGroup> ReportPermissionでリストユーザーグループ。

gr.users - コレクション<ユーザー>のUserGroupのユーザー。

u.id - @IdロングID。ユーザークラスで

関連する問題