【问题标题】:JPA Criteria Builder build a predicate on a setAttributeJPA Criteria Builder 在 setAttribute 上构建谓词
【发布时间】:2015-01-14 15:11:31
【问题描述】:

我是使用 Criteria Builder 构建动态查询的新手。

我正在尝试为我的存储库创建规范,以查找包含搜索词等描述的 DVD 标题。

我的模型中的 dvd 和 dvd 说明之间存在多对多连接。

在我的 DVD 静态元模型类中,我有一个

 public static volatile SetAttribute<DVD, DVDDescription> descriptions;

目前我收到一个错误:“CriteriaBuilder 不适用于参数

 public Predicate toPredicate(Root<DVDs> root, CriteriaQuery<?>, CriteriaBuilder cb){

     return cb.like(searchTerm,root.get(DVD_.descriptions))

}

我知道我可能会以错误的方式处理此问题,但是如何使用标准生成器来设置 setAttribute?

【问题讨论】:

    标签: jpa spring-data-jpa hibernate-criteria


    【解决方案1】:

    您需要加入:

    public Predicate toPredicate(Root<DVDs> root, CriteriaQuery<?>, CriteriaBuilder cb){
        Join<DVD, DVDDescription> descriptionJoin = root.join(DVD_.descriptions);
        return cb.like(searchTerm,descriptionJoin.get(DVDDescription_.content));
    }
    

    【讨论】:

    • 非常感谢!我有一个实体类 Profile:@Entity class Profile {@ManyToMany(mappedBy = "profiles")private Set groups = new HashSet(); } ;使用您的方法,我能够利用 CriteriaBuilder.In 通过给定的 Groupe.id 过滤配置文件: ==> Join groupeJoin = root.join(Profile_.groups); predicates.add(criteriaBuilder.in(groupeJoin.get(Groupe_.ID)).value(criteria.getValue()));
    猜你喜欢
    • 1970-01-01
    • 2019-06-22
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    相关资源
    最近更新 更多