Выберите временную метку 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?
Ответы
Ответ 1
Вместо max вы должны использовать CriteriaBuilder.greatest для Timestamp (а также для Date, String и других сопоставимых элементов). И если вам когда-либо понадобится MIN для метки времени, используйте вместо этого метод наименьшего
С подобной проблемой можно столкнуться при сравнении "меньше/больше/равнее". Первый принимает аргумент, который расширяет число, второй - для других сопоставимых: