Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何编写hql来获取所有没有权限的记录_Sql_Hibernate_Hql - Fatal编程技术网

Sql 如何编写hql来获取所有没有权限的记录

Sql 如何编写hql来获取所有没有权限的记录,sql,hibernate,hql,Sql,Hibernate,Hql,我有三张桌子 Project id, name ProjectAuthorization id, project_id, user_id , permission User id, name Project.java @OneToMany(mappedBy = "project", cascade = CascadeType.ALL) private List<ProjectAuthorization> permissions; 我想获得当前用户没有任何权限的

我有三张桌子

Project
   id, name
ProjectAuthorization
   id,  project_id, user_id , permission
User
   id, name
Project.java

@OneToMany(mappedBy = "project", cascade = CascadeType.ALL)
private List<ProjectAuthorization> permissions;
我想获得当前用户没有任何权限的所有项目,如何通过hibernate查询编写它

更新

hql如下所示:

select p from Project as p left join p.permissions as pa where pa.user.id!=:userid and p.id not in (select pa2.project.id from ProjectAuthorization as pa2 where pa2.user.id=:userid)");

例如,可以使用以下查询(也是有效的JPQL,没有使用特定于Hibernate的构造):

SELECT p
FROM Project p
WHERE p.id NOT IN
  (SELECT authorization.project.id
   FROM ProjectAuthorization authorization
   WHERE authorization.user = :currentUser)

这些表之间是否有关联映射?是的,project具有OneToMany权限,用户也具有OneToMany权限让我们查看它们之间的映射
select p from Project as p left join p.permissions as pa where pa.user.id!=:userid and p.id not in (select pa2.project.id from ProjectAuthorization as pa2 where pa2.user.id=:userid)");
SELECT p
FROM Project p
WHERE p.id NOT IN
  (SELECT authorization.project.id
   FROM ProjectAuthorization authorization
   WHERE authorization.user = :currentUser)