JPA标准生成器在setAttribute上构建谓词

JPA标准生成器在setAttribute上构建谓词,jpa,spring-data-jpa,hibernate-criteria,Jpa,Spring Data Jpa,Hibernate Criteria,我不熟悉使用Criteria Builder构建动态查询 我正在尝试为我的存储库创建一个规范,以查找包含类似搜索词的描述的DVD标题 在我的模型中,dvd和dvd说明之间有多对多连接 在我的DVD静态元模型类中,我有一个 public static volatile SetAttribute<DVD, DVDDescription> descriptions; 公共静态属性描述; 此时我收到一个错误:“CriteriaBuilder不适用于参数”” 公共谓词toPredicat

我不熟悉使用Criteria Builder构建动态查询

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

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

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

 public static volatile SetAttribute<DVD, DVDDescription> descriptions;
公共静态属性描述;
此时我收到一个错误:“CriteriaBuilder不适用于参数”

公共谓词toPredicate(根根、CriteriaQuery、CriteriaBuilder cb){
返回cb.like(searchTerm,root.get(DVD_u2;.descriptions))
}

我知道我可能用了错误的方法,但是我如何为setAttribute使用criteria builder?

您需要一个连接:

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));
}
公共谓词toPredicate(根根、CriteriaQuery、CriteriaBuilder cb){
Join descriptionJoin=root.Join(DVD\u.descriptions);
返回cb.like(searchTerm,descriptionJoin.get(dvdscription.content));
}
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));
}