如題,Oracle數(shù)據(jù)庫里面有一批記錄,現(xiàn)在我想根據(jù)其中一個(gè)叫:txn_date的字段來查詢記錄,在Hbm文件中我配置了該HQL,如下所示:
<sql-query name="job.getJobByDate">
select {job.*} from Newsletter_Message job
where to_char(:dateType,'yyyy-mm-dd hh24:mi') =
to_char(:jobDate, 'yyyy-mm-dd hh24:mi')
<return alias="job"
class="com.newsletter.domain.job.Job" />
</sql-query>

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

public List<Job> getJobByDate(final Date jobDate, final String dateType)
{
return (List<Job> 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')
每次執(zhí)行時(shí),總是拋異常,說:
org.springframework.dao.DataIntegrityViolationException: Hibernate operation: could not execute query;
.....
Caused by: java.sql.SQLException: ORA-01722: invalid number
我實(shí)在不明白為什么會(huì)報(bào)這個(gè)錯(cuò)誤,難道Hibernate在set date或者set string之前不會(huì)對(duì)其進(jìn)行格式的轉(zhuǎn)換嗎?于是我又換了另外一個(gè)HQL語句,在代碼里面提前將Date格式成String,但還是報(bào)錯(cuò):
where to_char(dateType,'yyyy-mm-dd hh24:mi') = :strDate
后來實(shí)在沒辦法了,用了一陰招,代碼如下,測(cè)試通過,但是覺得這種代碼太丑陋了。

public List<Job> 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<Job>) query.list();
}
});
}
不知道各位能否解析一下上面那個(gè)報(bào)錯(cuò)的原因,謝謝先了!
-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
posted on 2008-05-22 16:40
Paul Lin 閱讀(2261)
評(píng)論(0) 編輯 收藏 所屬分類:
J2EE 框架