我有一个问题,我需要使用LEAST和GREATEST函数联接两个表,但要使用JPA CriteriaQuery。这是我要复制的SQL ...
select * from TABLE_A a
inner join TABLE_X x on
(
a.COL_1 = least(x.COL_Y, x.COL_Z)
and
a.COL_2 = greatest(x.COL_Y, x.COL_Z)
);
我看过CriteriaBuilder.least(..)和greatest(..),但是在尝试理解如何创建
Expression<T>
传递给任何一个函数方面遇到了困难。 最佳答案
事实证明,CriteriaBuilder确实支持将LEAST和GREATEST调用为非聚合函数,并且可以使用CriteriaBuilder.function(..)对其进行访问,如下所示:
Predicate greatestPred = cb.equal(pathA.get(TableA_.col2),
cb.function("greatest", String.class,
pathX.get(TableX_.colY), pathX.get(TableX_.colZ)));