【发布时间】:2018-02-19 22:01:03
【问题描述】:
使用 Criteriabuilder 编写查询时,如何在两列上添加相等条件?例如:
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<String> cq = cb.createQuery(String.class);
Root<MyTable> root = cq.from(MyTable.class);
Predicate cond = cb.equal(root.get(MyTable_.columnA), root.get(MyTable_.columnB));
执行上述操作导致异常:
java.lang.IllegalArgumentException:参数值 [org.hibernate.jpa.criteria.path.SingularAttributePath@236f0ece] 与预期类型不匹配 [java.lang.String (n/a)]`
【问题讨论】:
-
你的意思是2个字段?因为 JPQL 和 JPA Criteria 不处理列。发布该异常的其余标准代码+堆栈跟踪;然后揭示问题所在。它在where子句中吗?还是在选择子句中?就目前而言,您发布的代码完全正确。
-
如 DN1 所述:您的
where在哪里?你是什么select?你如何执行你的cq?
标签: java hibernate jpa jpa-criteria