Java spring数据JPA CriteriaBuilder.isNull返回语法错误
规格:Java spring数据JPA CriteriaBuilder.isNull返回语法错误,java,spring,hibernate,Java,Spring,Hibernate,规格: public Predicate toPredicate(Root<Hotel> root, CriteriaQuery<?> query, CriteriaBuilder cb) { Predicate predicate = root.get("starRating").in(s); if (unrated) { predicate = cb.or(predicate, cb.isNull(roo
public Predicate toPredicate(Root<Hotel> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
Predicate predicate = root.get("starRating").in(s);
if (unrated) {
predicate = cb.or(predicate, cb.isNull(root.get("starRating")));
}
return predicate;
}
公共谓词toPredicate(根根、CriteriaQuery查询、CriteriaBuilder cb){
谓词谓词=根.get(“starRating”).in(s);
如果(未分级){
谓词=cb.or(谓词,cb.isNull(root.get(“starRating”));
}
返回谓词;
}
其中s
是一个集合
SQL日志:
Hibernate:选择hotel0.hotel\u id作为hotel\u id 1\u 16,hotel0.star\u评级为star\u ra13\u 16,其中hotel0.active=?和(酒店0.star_评级为()或酒店0.star_评级为空)按较低(酒店0.hotel_名称)asc排序
错误:
ERROR 6828---[nio-8080-exec-1]o.h.engine.jdbc.spi.SqlExceptionHelper:ERROR:syntax ERROR at or near”)“
例外情况:
org.springframework.dao.InvalidDataAccessResourceUsageException:无法提取结果集;SQL[n/a];嵌套异常为org.hibernate.exception.sqlgrammareexception:无法提取结果集
我在这里遗漏了什么?您查询的问题在这里:
hotel0.star\u评级在()
。
在此点之前对集合s进行空检查:
if(s != null && !s.isEmpty()){
predicate = root.get("starRating").in(s);
}