过滤获取集合的元素。的EclipseLink。 Criteria API

时间:2017-07-04 11:36:58

标签: eclipselink criteria-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 进行此操作,但没有成功..

有办法吗?

1 个答案:

答案 0 :(得分:0)

我建议您在需要时查询与用户匹配的权限和所需的过滤器。您甚至可以使用瞬态集合在您的实体中缓存​​此集合,以在对象中传递它。在关系上使用过滤器最终会导致问题并破坏缓存,因为对象中的内容不再是数据库中内容的真实表示。

尽管如此,没有JPA方法可以做到,但Eclipselink支持additional criteria

相关问题