我是使用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使用条件构建器?
答案 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));
}