-1

私は3つのテーブルを持っています

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;

User.java

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

ProjectAuthorization.java

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

現在のユーザーが権限なしですべてのプロジェクトを取得したいのですが、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)");
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 に答える