JPA Criteria Builder在setAttribute上构建谓词

时间:2014-11-17 16:29:14

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

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

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

我的模型中dvds和dvd desciptions之间有多对多的连接。

在我的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使用条件构建器?

1 个答案:

答案 0 :(得分: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));
}