函数to_date与oracle和hql hibernate

时间:2013-11-22 08:38:48

标签: java oracle hibernate

我使用oracle和hql

我有这个问题:

Query query = getSession().createQuery("FROM RequestHealthCertificate  rs  WHERE rs.requestDateHcertif between to_date(:pstartDate,'MM/DD/YYYY') and to_date(:pendDate,'MM/DD/YYYY')");

        //Query query = getSession().createQuery("FROM RequestHealthCertificate  rs  WHERE rs.requestDateHcertif between :pstartDate and :pendDate");

        query.setParameter("pstartDate", startDate);
        query.setParameter("pendDate", endDate);

这是日期的一个例子,将使用 to_date 星期四07月12日00:00:00 CET 2013

进行转换

但是当我测试时我有这个错误:

ERROR [org.hibernate.util.JDBCExceptionReporter] (http-localhost-127.0.0.1-8080-1) ORA-01858: Caractère non numérique trouvé à la place d'un caractère numérique

09:07:49,635 INFO  [org.directwebremoting.log.accessLog] (http-localhost-127.0.0.1-8080-1) Method execution failed: : org.hibernate.exception.DataException: could not execute query
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:102) [hibernate3.jar:3.5.3-Final]
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) [hibernate3.jar:3.5.3-Final]

3 个答案:

答案 0 :(得分:1)

您必须确保这些变量的类型为String而不是DATE,并且它们必须具有相同的格式。

答案 1 :(得分:0)

如果开始日期和结束日期均为DATE类型,则无需进行转换。 如果两个值均为字符串类型,则只需进行转换

答案 2 :(得分:-1)

您应该尝试使用此方法设置日期而不是使用to_date。

http://www.roseindia.net/hibernate/examples/hql/HQL-date-Between.html