如题,Oracle数据库里面有一批记录,现在我想根据其中一个叫:txn_date的字段来查询记录,在Hbm文件中我配置了该HQL,如下所示:

select {job.*} from Newsletter_Message job

where to_char(:dateType,'yyyy-mm-dd hh24:mi') =

to_char(:jobDate, 'yyyy-mm-dd hh24:mi')

在DAO方法中我使用了Spring的HibernateTemplate,方法如下:

public List getJobByDate(final Date jobDate, final String dateType) {

return (List getHibernateTemplate().executeFind(

new HibernateCallback() {

public Object doInHibernate(Session session)

throws HibernateException {

Query query = session.getNamedQuery("job.getJobByDate");

query.setString("dateType", dateType);

query.setDate("jobDate",jobDate);

return query.list();

}

});

}

Hibernate生成的SQL语句如下

select job.TXN_NO as TXN1_5_0_,

job.TXN_TYPE as TXN2_5_0_,

job.TXN_DATE as TXN3_5_0_,

from Newsletter_Message job

where to_char(?, 'yyyy-mm-dd hh24:mi') = to_char(?, 'yyyy-mm-dd hh24:mi')

每次执行时,总是抛异常,说:

org.springframework.dao.DataIntegrityViolationException: Hibernate operation: could not execute query;

.....

Caused by: java.sql.SQLException: ORA-01722: invalid number

我实在不明白为什么会报这个错误,难道Hibernate在set date或者set string之前不会对其进行格式的转换吗?于是我又换了另外一个HQL语句,在代码里面提前将Date格式成String,但还是报错:

where to_char(dateType,'yyyy-mm-dd hh24:mi') = :strDate

后来实在没办法了,用了一阴招,代码如下,测试通过,但是觉得这种代码太丑陋了。

public List getJobByDate(final Date jobDate, final String dateType) {

return getHibernateTemplate().executeFind(new HibernateCallback() {

public Object doInHibernate(Session session)

throws HibernateException {

String strDate = DateUtil.convertDateToString(jobDate,

"yyyy-MM-dd HH:mm");

Query query = session.createQuery("from Job job where "+"to_char("+ dateType +",'yyyy-mm-dd hh24:mi') = '"+ strDate +"'");

return (List) query.list();

}

});

}

不知道各位能否解析一下上面那个报错的原因,谢谢先了!

[该贴被pengpenglin于2008-05-22 16:55修改过]

oracle能用hql吗,使用HQL查询日期,Oracle报“Invalid number”相关推荐

  1. oracle获取今天凌晨的时间_oracle查询日期语句有哪些?

    oracle查询日期语句有:1.取得当前日期是本月的第几周,代码为[select to_char(sysdate,'W')]:2.取得当前日期是一个星期中的第几天,代码为[select sysdate ...

  2. oracle游标多线程,多线程jdbc游标分页查询原理 oracle和mysql分页

    分页查询中如何使用多线程加快处理速度? 分页sql是拼起来的现在怎么优化可以提高展示速度:优化思路: 1.试试并发多线程访问,然后把多线程获取的结果合并在一起. 2.做索引,加快查询速度. 3.把经常 ...

  3. jpa oracle 传参int类型判空_SQL查询:Oracle、mysql、HQL查询语句差异

    SQL是结构化查询语言,执行Select(选择).Update(更新).Delete(删除)和Insert(插入)等数据任务. mysql是一个关系型数据库,用于存储和检索数据. 关系数据库是指基于关 ...

  4. 深入HQL学习以及HQL和SQL的区别

    HQL(Hibernate Query Language) 是面向对象的查询语言, 它和 SQL 查询语言有些相似. 在 Hibernate 提供的各种检索方式中, HQL 是使用最广的一种检索方式. ...

  5. rowbounds分页oracle,Oracle使用MyBatis中RowBounds实现分页查询功能

    Oracle中分页查询因为存在伪列rownum,sql语句写起来较为复杂,现在介绍一种通过使用MyBatis中的RowBounds进行分页查询,非常方便. 使用MyBatis中的RowBounds进行 ...

  6. Oracle字符集的查看查询和Oracle字符集的设置修改

    本文主要讨论以下几个部分:如何查看查询oracle字符集. 修改设置字符集以及常见的oracle utf8字符集和oracle exp 字符集问题. 一.什么是Oracle字符集 Oracle字符集是 ...

  7. oracle 查询天,Oracle查询_ 单表查询

    前面我们详解了关于Oracle的增删改,今天让我们接着来学习Oracle的查询吧, Oracle中查询可是重头戏噢!!!跟着煌sir的步伐,走位,走位~~~ 小知识锦囊 在此前,先讲解一个小知识点 O ...

  8. Oracle创建用户并给用户授权查询指定表或视图的权限

    MSV31账户登录数据库进行如下操作: CREATE USER NORTHBOUND IDENTIFIED BY NORTHBOUND  DEFAULT TABLESPACE "TBS_DN ...

  9. 体验一下Oracle 11g物理Active Data Guard实时查询(Real-time query)

    以下为[高可用] 课后一则实验日志: --------------------------------------------------------------------------------- ...

最新文章

  1. [转]C++/CLI与C#常用语法对比
  2. winform中捕获程序未处理的所有异常
  3. Linux之bash脚本编程---选择执行
  4. 【推荐】让你事半功倍的交互体验自查清单
  5. 一起用C#做个五子棋的小游戏 增加了程序对战功能
  6. 全面解析并实现逻辑回归(Python)
  7. 为什么C语言函数不能返回数组,却可以返回结构体?
  8. P1447 [NOI2010]能量采集(mobius反演)
  9. 【51单片机快速入门指南】2.2:任意位/任意长度数码管显示数字、小数
  10. python将小数转为分数_Python分数
  11. rk3399_android7.1调试USB蓝牙模块小结
  12. 《淘宝网开店 进货 运营 管理 客服 实战200招》——1.11 开店前要做好调查,预测市场...
  13. 机器学习笔记【一】- 线性回归(末):统计学推导以及局部加权线性回归算法实例
  14. c语言大神,C语言入门大神有话说(一)
  15. 海思开发记录(一):3559A开发环境搭建
  16. 动态数组是怎么创建的?BQe
  17. “人在囧途”今年少有的国产好电影
  18. c# 蓝牙虚拟串口_32feet.net 蓝牙虚拟串口编程
  19. 1435 牛刀小试结构体
  20. Python技法-序列拆分

热门文章

  1. android教案,android教学教案.doc
  2. 2021-09-07 停课集训R8解题报告
  3. 剑指XX游戏(七) - 不拼搏,枉少年
  4. Linux 基础入门 08
  5. 用循环不定式来证明冒泡排序的正确性
  6. 大型重工机械设备远程监控系统平台
  7. 模型训练过程中产生NAN的原因分析
  8. 如何查美国公司的年报
  9. 离散数学在计算机科学中的应用
  10. Postgresql杂谈 16—Postgresql中的锁机制