Oracle数据库中表的字段设置为:date类型(这里我不需要时间,因此采用了date型,如果需要时间似乎应采用timestamp类型);
模型层表对应的pojo类及hibernate映射文件中属性的类型为java.util.Date;
表现层采用Dorado处理,dataset中相应的字段也设置为:date类型;
利用MyEclipse中自带的hibernate逆向工程自动生成DAO类。
在通过以上配置调用DAO中的方法,进行以date类型属性作为查询条件进行查询时,会产生以下错误:
ORA-01858: 在要求输入数字处找到非数字字符
个人认为是由于date类型的格式问题导致的,即查询条件中的日期格式与数据库中的格式不一致。因为可以看到,由表现层传到BO层的Date对象为:“Wed Jul 28 13:09:40 CST 2010 ”,而数据库中存储的为:“2010-7-28”,所以考虑转换时间格式。
我采用了以下方法处理该问题:
1、在DAO类中添加利用该属性检索实例的查询方法
public List findByFailueDate (String FailueDate) {
log.debug("finding by FailueDate");
try {
String queryString = "from MachineMaintenance as mm where mm.failureTime = to_date('"+FailueDate+"','yyyy-mm-dd')";
List list = new ArrayList();
list = getHibernateTemplate().find(queryString);
return list;
} catch (RuntimeException re) {
log.error("find by FailueDate failed", re);
throw re;
}
}
to_date为oracle中的函数,要特别注意的是如果需要时间,那么to_date中的参数应为:“yyyy-mm-dd hh-mi-ss”,因为oracle中不区分大小写的,所以分钟不应该用mm,而改为mi。
可以看到该查询方法的形参为String型而不是Date型。
2、在BO处理类中,得到界面层传入的Date对象d(println输出为:“Wed Jul 28 13:09:40 CST 2010 ”),通过SimpleDateFormat将d转化为String类型的date对象:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String date = sdf.format(d);
List list = xxxxDAO.findByFailueDate(date);
3、而后将date作为参数,调用DAO中的方法进行查询。顺利得到了想要得到的查询结果。
请各位高手多多指教啊,我是菜鸟,可能处理上走了很多弯路,不过总算是自己走通了,虽然方法笨了点儿。
分享到:
相关推荐
oracle中date类型的操作,增删改查oracle中date类型的操作,增删改查
Oracle中日期转换 to_date参数含义 日期转换写入实例
oracle中TIMESTAMP与DATE比较
Oracle查询处理in条件超过1000条的2种后台处理方式:A,后台拼接查询条件;B,每1000条查询一次,最后返回查询结果;
Oracle没有datetime类型,只有date类型,date类型可以同时用作日期时间类型。这里对Oracle日期时间类型做一下简单的介绍
Oracle中to_date格式 Data与String互转及各种用法
oracle中一些date的详细介绍函数,很有用的
oracle 迅速查询和更新大数据,oracle 迅速查询和更新大数据oracle 迅速查询和更新大数据
大数据量表的处理方法对新手很有帮助,希望大家踊跃下载
oracle中date类型的操作,增删改查。oracle中date类型的操作,增删改查
Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQL...
oracle中对blob字段的处理方法,包括增加,删除,修改,更新等操作。
归纳了java中Date类型的转换和Oracle中Date类型转换的常见和部分不常见问题总结
告诉你oracle中Datatime类型直接输入方法,告诉你oracle中Datatime类型直接输入方法
Oracle 中的 TO_DATE 和 TO_CHAR 函数 oracle 中 TO_DATE 函数的时间格式,以 2008-09-10 234556 为例
oracle中日期类型与unix 时间戳的转换, Unix时间戳记是从'1970-01-01 00:00:00'GMT开始的秒数,表现为整数型。 Oracle中的时间是Date型,以下函数提供了两种时间转换的Oracle函数 --unix时间戳与date时间互转 ...
Oracle查询指定表的所有字段名和数据类型SQL
ORACLE中CLOB字段转String类型
一般数据库中时间的格式为DATE类型,而我们从页面中获取的时间往往为String类型, 这个就需要类型的转换。一般我们会通过调用java.text.SimpleDateFormat JAVA...本文将为大家介绍Oracle时间精确到时、分、秒处理方法。
(1)在英文版本的ORACLE中默认日期格式为’DD-MON-YY’,例如’01-JAN-98′ 在汉化的中文版本中ORACLE默认日期格式为’日-月-年’,例如’21-8月-2003’或’21-8月-03′ (2)转换字符串为日期 使用ORACLE内部函数to_...