2016-04-22 61 views
1

我試圖從數據庫中查詢數據列表,取決於日期。org.hibernate.hql.internal.ast.QuerySyntaxException:意外的令牌:Apr在第1行81列

這是我的代碼:

@Override 
public List<CoursChange> listeTauxChange(Date datJourCchn) { 

    Query q = sessionFactory.getCurrentSession().createQuery(
      "from CoursChange c where c.datJourCchn="+datJourCchn); 
    return q.list(); 

} 

錯誤是:

org.hibernate.hql.internal.ast.QuerySyntaxException:意外的標記時間:Apr近線1,列81 [從com.gtec.GestionChangeDevise.entity.CoursChange c where c.datJourCchn = Mon Apr 18 00:00:00 WAT 2016]

這是怎麼回事,我該如何解決呢?

回答

1

首先從來沒有參數化查詢通過連接它與字符串化的參數值。在查詢字符串中使用namedpositioned參數聲明,然後將參數值設置爲Query對象。

Query q = sessionFactory.getCurrentSession().createQuery(
     "from CoursChange c where c.datJourCchn=:DAT_JOUR_CCHN"); 
q.setParameter("DAT_JOUR_CCHN", datJourCchn, TemporalType.DATE) 
return q.list(); 
+0

更糟糕的是,'Apr'是'datJourCchn.toString()'。''TemporalType的結果。 DATE'沒有必要,因爲我認爲。 –

+0

感謝您的迴應,我會嘗試並告訴你:) –

+0

@ v.ladynev第三個參數'TemporalType'有時不是必需的,有時候是ve非常重要。只有來自特定問題的信息,在這種情況下,沒有人能夠決定它是否必要或重要。 –

-1

錯過"包裹datJourCchn

"from CoursChange c where c.datJourCchn = \"" + datJourCchn + "\"" 

81柱[從com.gtec.GestionChangeDevise.entity.CoursChange c其中c.datJourCchn =星期一年04月18 00:00:00 WAT 2016]是一個空間,這會導致錯誤的查詢字符串。

+0

thnkx for respond me; (\) –

+0

現在的錯誤是: 意外的char:'「'[來自com.gtec.GestionChangeDevise.entity.CoursChange c其中c.datJourCchn =」null「] –

+0

」 null「不是'java.util.Date',你應該檢查datJourCchn是否正確傳遞,然後查詢字符串。它應該看起來像'from com.gtec.GestionChangeDevise.entity.CoursChange c where c.datJourCchn = 「Mon Apr 18 00:00:00 WAT 2016」' – yyc1217