Это может кому-то помочь.
Немногие реализации JPA имеют встроенную поддержку функций даты / времени.
EclipseLink
EclipseLink поддерживает EXTRACT, позволяя любой базе данных поддерживать дату / время
часть стоимости, которая будет извлечена из даты / времени. Функция ЭКСТРАКТ
база данных независима, но требует поддержки базы данных. EXTRACT (YEAR,
model.currencyExchangeDate), но для этого требуется EclipseLink 2.4.x
FUNC позволяет вызывать функцию базы данных из JPQL. Это позволяет вызывать любые функции базы данных, которые не поддерживаются непосредственно в JPQL.
Для вызова функции БД MyFunc (a, b, c) используйте FUNC («MyFunc», a, b, c).
Вы можете попробовать FUNC ('YEAR', currencyExchangeDate), чтобы вызвать 'YEAR'
функция.
Hibernate
В HQL у вас может быть функция даты YEAR (дата), MONTH (дата), DAY (дата)
извлечь необходимые детали. Другие функции времени поддерживаются
ЧАС (дата), МИНУТА (дата), ВТОРОЙ (дата).
Критерии API
CriteriaBuilder # function (): создать выражение для выполнения
функции базы данных.
CriteriaQuery<IptExchangeratelines> cq = cb.createQuery(IptExchangeratelines.class);
Root<IptExchangeratelines> exRateLine = cq.from(IptExchangeratelines.class);
cq.where(cb.equal(cb.function("year", Integer.class,
exRateLine.get(exRateLine_.currencyExchangeDate)), year)
.and(cb.equal(cb.function("month", Integer.class,
exRateLine.get(exRateLine_.currencyExchangeDate)), month)));