【发布时间】:2019-08-09 15:16:51
【问题描述】:
我正在尝试使用动态字段创建条件查询
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
javax.persistence.criteria.CriteriaQuery cq = cb.createQuery();
Root<Abc> abc = cq.from(Abc.class);
List<Selection<?>> selectList = new ArrayList<Selection<?>>();
if(id != null){
selectList.add(cq.select(abc.get("id")));
}
if(summary != null){
selectList.add(cq.select(abc.get("summary")));
}
cq.multiselect(selectList)
上面的代码给出了异常 java.lang.ClassCastException:org.hibernate.query.criteria.internal.CriteriaQueryImpl 不能转换为 javax.persistence.criteria.Selection
这是类型转换问题,但有什么方法可以在多选中实现动态值
【问题讨论】:
-
什么错误???
-
您的意思是
abc.get(id)和abc.get(summary)不带引号吗? -
应该
selectionList是selectList? -
异常不是语法错误。
-
它早些时候.i 更正了该代码:)
标签: java spring spring-boot jpa