Hibernate4.3 предоставляет встроенные функции для доступа к датам / временным меткам и выполнения арифметических операций с ними
Здесь - ссылка на документацию о том, какие выражения можно использовать в HQL.
Немногие из которых я упоминаю:
Для доступа к дате / времени:
current_date(), current_time(), and current_timestamp()
Арифметические операции могут быть выполнены следующим образом. Эти функции принимают время в качестве ввода:
second(...), minute(...), hour(...), day(...), month(...), and year(...)
Можно получить абсолютную разницу в HQL по
current_timestamp() - dateInstance
где dateInstance может иметь определение
@Column(name = "updated_at")
@Temporal(TemporalType.TIMESTAMP)
private java.util.Date updatedAt;
Результат за 0,1 секунды. Таким образом, при абсолютной разнице в 1 секунду приведенное выше выражение даст результат как 10.
Таким образом, запрос будет выглядеть так:
select t from Table t where (current_timestamp() - updatedAt)>600