【发布时间】:2014-02-12 04:07:38
【问题描述】:
在将相当简单的纯 sql 语句重写为条件查询时,我遇到了困难。 基本上我可以将查询简化为
select max(T.value, S.value) from T, S where T.id = S.id
我试过了
CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery();
Root<T> fromT = cq.from(T.class);
Root<S> fromS = cq.from(S.class);
cq.where(cb.equal(fromT.get("id), fromS.get("id"));
cq.select(); // <---- what to put here.
getEntityManager().createQuery(cq).getResultList();
我找到了最好的方法,但它是水平比较(列中的值),我想比较同一行但不同列中的两个值,并得到一个最大的值。
我想到的唯一解决方案是获取结果并“手动”对它们进行排序,但这会影响性能。
【问题讨论】: