【问题标题】:Filter elements of fetched collection. EclipseLInk. Criteria API过滤获取的集合的元素。 Eclipse 链接。标准 API
【发布时间】:2017-07-04 11:36:57
【问题描述】:

我有一个对象:

@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 子句选择用户实体并获取权限集合。换句话说,权限集合必须只包含满足 where 条件的元素。 我试过用 SetJoin 来做,但没有成功..

有办法吗?

【问题讨论】:

    标签: eclipselink criteria-api


    【解决方案1】:

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

    也就是说,没有 JPA 方法可以做到,但 Eclipselink 支持additional criteria

    【讨论】:

    • 感谢您的回答。我已经按照说的做了——查询权限并使用单独的查询过滤它们。
    猜你喜欢
    • 2010-09-23
    • 2011-06-28
    • 2011-12-05
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    相关资源
    最近更新 更多