2017-07-04 17 views
0

私はオブジェクトがあります。フェッチされたコレクションの要素をフィルタリングします。 EclipseLInk。クライテリアAPI

@Entity 
@Table(name = "users", catalog = "adm", uniqueConstraints = @UniqueConstraint(columnNames = "loginUser")) 
public class User implements GenericEntityPK<Integer> { 

    private Set<Permission> permissions = new HashSet<Permission>(0); 
@ManyToMany(fetch = FetchType.LAZY) 
    @JoinTable(name = "user_l_permission", catalog = "adm", joinColumns = { 
      @JoinColumn(name = "idUser", nullable = false, updatable = false) }, inverseJoinColumns = { 
        @JoinColumn(name = "idPermission", nullable = false, updatable = false) }) 
    public Set<Permission> getPermissions() { 
     return this.permissions; 
    } 
} 

を私は、ユーザーのエンティティを選択して、where句で、権限のコレクションを取得したいです。つまり、アクセス許可コレクションには、条件を満たす要素のみが含まれている必要があります。 私はSetJoinでそれを行うことを試みたが、成功しません。..

はそれを行う方法はありますか?

答えて

0

代わりに、必要なときにユーザーとフィルタに一致するアクセス許可を照会することをお勧めします。このコレクションを一時的なコレクションでエンティティ内にキャッシュして、オブジェクト内でそれを渡すこともできます。リレーションシップでフィルタを使用すると、問題が発生し、オブジェクトの内容がデータベース内の内容を正しく表現できないため、キャッシュが破損します。そこにそれを行うにはJPA方法はありませんが、EclipseLinkのはadditional criteria

+0

をサポートし、言っ

は、あなたの答えをいただき、ありがとうございます。私はすでに述べたように、パーミッションをクエリし、別のクエリでフィルタリングしました。 –

関連する問題