java com.forgon.tools.hibernate.ObjectDao.getHibernateSession()问题,qr.setParameter();无效的月份
最近刚接触web前端开发,在开发使用hibernate框架操作oracle数据库时出现一个问题。查询sql语句需要时间做为条件判断。
在此记录一下该问题,防止下次再次碰到。
//拼接sql查询语句
StringBuffer bfsql = new StringBuffer("select po.id,po.logInfo,po.device,po.logLevel,po.logType,po.userName,po.appId,po.sessionId,po.logFileName,po.createTime from ");
bfsql.append(poClass);
bfsql.append(" po ");
bfsql.append(sql);
bfsql.append(" and po.createTime between to_date('"+startdate+"','yyyymmdd') and to_date('"+enddate+"','yyyymmdd') ");
bfsql.append(orderby);
Query qr = objectDao
.getHibernateSession()
.createQuery(bfsql.toString());
try {
//使用hibernate框架set预处理的值会报错,会提示无效的月份。之后直接在sql语句中拼接需要填入的参数值解决。
// qr.setParameter(0, new SimpleDateFormat("yyyyMMdd").parse(startdate));
// qr.setParameter(1, new SimpleDateFormat("yyyyMMdd").parse(enddate));
Logger.getLogger(getClass()).info(
"Tang_sql---------->:" + "select po.id,po.logInfo,po.device,po.logLevel,po.logType,po.userName,po.appId,po.sessionId,po.logFileName,po.createTime from "
+ poClass
+ " po "
+ sql
+ " and po.createTime between to_date('"+startdate+"','yyyymmdd') and to_date('"+enddate+"','yyyymmdd') "
+ orderby);
} catch (HibernateException e) {
e.printStackTrace();
}