В моем приложении мне нужно получить дату базы данных (sysdate
в случае БД Oracle) и сравнить ее с датой ввода пользователя (String
, преобразованной в java.util.Date
). С этого форума я получил следующий код, который помогает в случае Oracle диалект.
public Date getDate() {
Session session = getHibernateTemplate().getSessionFactory().openSession();
SQLQuery query = session.createSQLQuery("select sysdate as mydate from dual");
query.addScalar("mydate", Hibernate.TIMESTAMP);
return (Date) query.uniqueResult();
}
И из эта ссылка получила следующий метод, который использует файл сопоставления с формулой.
<property name="currentDate" formula="(select sysdate from dual)"/>
Опять же, это специфично для Oracle. Я думаю, что использование более позднего метода более удобно для производительности, потому что мы можем получить его из того же сеанса, т.е. нет необходимости открывать другой сеанс только для получения даты.
Я ищу универсальное решение для получения даты, времени и метки времени из любой СУБД, использующей Hibernate. Использование HQL является предпочтительным. Надеюсь, что такое решение доступно.