Spring Boot 对LocalDate使用criteriaBuilder.max()时出错

k5ifujac  于 2023-05-28  发布在  Spring
关注(0)|答案(1)|浏览(148)

我试图在子查询中使用条件生成器获取最大日期。但是我得到这个错误Required type:提供的表达:表达式

Subquery<LocalDate> subRoot = criteriaQuery.subquery(LocalDate.class);

        subRoot.select(criteriaBuilder.max(root.get("date")));

我试图从子查询中获取最大日期,这是我的父查询所需的。

0x6upsns

0x6upsns1#

而不是max,你必须使用greatest的日期。Max是数字类型。参考下面的代码段以供参考

EntityManger em;      //to be injected or constructed

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Exam> cq = cb.createQuery(Exam.class);
Subquery<Date> sq = cq.subquery(Date.class);
Root<Exam> s1 = cq.from(Exam.class);
Root<Exam> s2 = sq.from(Exam.class);
sq.select(cb.greatest(s2.get(Exam.end)));
List<Exam> result = em.createQuery(cq).getResultList();

相关问题