如何使用hibernate从数据库获取系统日期、时间和时间戳
在我的应用程序中,我需要获取数据库日期(如果是 Oracle DB,则为 sysdate
)并将其与用户输入日期(String
转换为 java.util.Date)进行比较。 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 从任何 DBMS 获取日期、时间和时间戳。首选使用 HQL。希望有这样的解决方案。
In my application I need to get database date(sysdate
in case of Oracle DB) and compare it with user input date (String
converted to java.util.Date
). From this forum I got the following code which helps in the case of Oracle dialect.
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();
}
And from this link got the following method which uses mapping file with formula.
<property name="currentDate" formula="(select sysdate from dual)"/>
Again this is specific to Oracle. I think using later method is more performance friendly, because we can get it from the same session, i.e no need of opening another session just for getting date.
I am looking for a generic solution to get date, time and timestamp from any DBMS using Hibernate. Using HQL is the preferred. Hope such a solution is available.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
对于那些正在寻找 .NET /C# 解决方案的人来说,以下是对我有用的方法:
For those who are looking for .NET /C# solution, here is what worked for me: