<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 262,  comments - 221,  trackbacks - 0

    如題,Oracle數據庫里面有一批記錄,現在我想根據其中一個叫: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')


    每次執行時,總是拋異常,說:
    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<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();
        }

      }
    );
    }


    不知道各位能否解析一下上面那個報錯的原因,謝謝先了!



    -------------------------------------------------------------
    生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
    posted on 2008-05-22 16:40 Paul Lin 閱讀(2273) 評論(0)  編輯  收藏 所屬分類: J2EE 框架
    <2008年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(21)

    隨筆分類

    隨筆檔案

    BlogJava熱點博客

    好友博客

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲国产一级在线观看| 四虎永久成人免费| 成人免费午夜无码视频| 免费一级毛片免费播放| 亚洲国产三级在线观看| 亚洲欧洲日本在线观看| a级毛片毛片免费观看久潮喷| 三年片在线观看免费观看高清电影 | 88xx成人永久免费观看| 亚洲av日韩片在线观看| 亚洲午夜成激人情在线影院| 男女一边桶一边摸一边脱视频免费| 成人久久免费网站| 免费一级毛片不卡不收费| v片免费在线观看| 拨牐拨牐x8免费| 亚洲综合免费视频| 国产成人无码区免费网站| 国产亚洲一区二区精品| 8090在线观看免费观看| 亚洲免费在线视频观看| 国产精品免费看久久久久| 亚洲国产精品专区| 午夜小视频免费观看| 亚洲午夜国产精品无卡| 日本a级片免费看| 国产精品亚洲综合五月天| 最近2019中文字幕免费大全5 | 亚洲人成图片网站| 男人的天堂亚洲一区二区三区| 麻豆亚洲AV成人无码久久精品 | 蜜桃成人无码区免费视频网站| 亚洲一区二区三区在线播放| 国产亚洲视频在线| 日本不卡在线观看免费v| 精品国产免费人成网站| 亚洲成人免费在线观看| 永久看日本大片免费35分钟| 久久青青草原亚洲av无码app| 久久青草免费91观看| 亚洲今日精彩视频|