日期:2014-05-17  浏览次数:21414 次

hibernate oracle sysdate的问题 获取最近某段时间内的数据
本帖最后由 pineapple_zjw 于 2013-05-28 11:02:16 编辑
有一个功能:
判断某用户在最近15分钟内,是否有他产生的数据存在数据库。
直接在oracle中查询语句(省略了用户的判断信息):
 select * from TABLE where TIME>(sysdate-1/96) and TIME<sysdate;

这在ORACLE里面直接查询是可以的。

但在hibernate中,使用HQL和原生SQL都无法查询
String hql = "select * from Getnumber where phonenumber='" + phonenumber
+ "' and qnogettime>(sysdate-1/96);";
Query query = this.getSession().createSQLQuery(hql);
List<Getnumber> gtlist = query.list();

报错信息:
10:52:02,815  WARN org.hibernate.util.JDBCExceptionReporter:100 - SQL Error: 911, SQLState: 42000
10:52:02,819 ERROR org.hibernate.util.JDBCExceptionReporter:101 - ORA-00911: 无效字符

看样子hibernate不支持sysdate?
在hibernate中用new Date()可以获取当前时间,本来想直接用sysdate,操作起来方便很多,不知道该怎么解决才好?

谢谢。
Oracle Hibernate SQL hql sysdate

------解决方案--------------------
hibernate不支持你把分号写在sql里而已。

我就不明白sql后面非得带个分号是什么习惯,这又不是PL/SQL。