Подтвердить что ты не робот

Выберите временную метку MAX с API-критериями JPA2

Итак, моя сущность имеет:

@Column(name="TS", nullable=false)
private java.sql.Timestamp timestamp; 

Моя сгенерированная метамодель имеет:

public static volatile SingularAttribute<MyEntity,Timestamp> timestamp;

Я хочу выбрать значение Max Timestamp:

Root<MyEntity> root = query.from(MyEntity.class);
Expression maxExpression = cb.max(root.get(MyEntity_.timestamp));

Но мне не разрешено, потому что:

max(Expression<N> x) Создайте агрегированное выражение, используя числовую операцию max. Выражение <N extends java.lang.Number>

Конечно, Timestamp не расширяет Number.

Как я могу сделать MAX для столбца Timestamp используя API-интерфейс Criteria?

4b9b3361

Ответ 1

Вместо max вы должны использовать CriteriaBuilder.greatest для Timestamp (а также для Date, String и других сопоставимых элементов). И если вам когда-либо понадобится MIN для метки времени, используйте вместо этого метод наименьшего

С подобной проблемой можно столкнуться при сравнении "меньше/больше/равнее". Первый принимает аргумент, который расширяет число, второй - для других сопоставимых: