2017-07-04 34 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

謝謝您的回答。我已經說過了 - 查詢權限並使用單獨的查詢進行過濾。 –