-1

我有三张桌子

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

项目.java

@OneToMany(mappedBy = "project", cascade = CascadeType.ALL)
private List<ProjectAuthorization> permissions;

用户.java

@OneToMany(mappedBy = "user",cascade =CascadeType.ALL)
private List<ProjectAuthorization> permissions;

项目授权.java

@ManyToOne()
private Project project;
@ManyToOne()
private User user;

我想在没有任何权限的情况下获取当前用户的所有项目,如何通过休眠查询编写它?

更新

像这样的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)");
4

1 回答 1

0

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

SELECT p
FROM Project p
WHERE p.id NOT IN
  (SELECT authorization.project.id
   FROM ProjectAuthorization authorization
   WHERE authorization.user = :currentUser)
于 2013-02-04T20:35:36.723 回答