2016-04-22 13 views
1

データベースの魔法使いからのデータのリストを日付によって照会しようとしています。ここでorg.hibernate.hql.internal.ast.QuerySyntaxException:予期しないトークン:行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:予期しないトークン:行1近くに4月、コラム81 [からこれが原因とされており、どのように私はそれを解決するにはどうすればよいcom.gtec.GestionChangeDevise.entity.CoursChangeのC c.datJourCchn =月4月18日夜12時00分00秒WAT 2016]

答えて

1

まず、文字列化されたパラメータ値を連結してパラメータ化クエリを作成しないでください。クエリ文字列にnamedまたはpositionedパラメータ宣言を使用し、パラメータ値を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() 'の結果です。私が思うようにDATEは必要ではありません。 –

+0

あなたの応答をありがとう、私はそれを試して、あなたに伝えます:) –

+0

@ v.ladynev第3引数 'TemporalType'は時には必要ではない場合もあります非常に重要なのです。与えられた質問のみからの情報では、誰もそれがこの場合に必要かどうかを決定することはできません。 –

-1

あなたは[com.gtec.GestionChangeDevise.entity.CoursChangeのC c.datJourCchn =月4月18日0時00分〇​​〇秒WAT 2016から]の列81がAでdatJourCchn

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

をラップする"を欠場空のクエリ文字列の原因となります。

+0

thnkxが私に応答しました。 私はの有用性を理解することができませんでした(\) –

+0

エラーは以下のようになります。 予期しない文字:「"」[com.gtec.GestionChangeDevise.entity.CoursChange cからどこc.datJourCchn =『ヌル』] –

+0

」 null "はjava.util.Dateではないので、datJourCchnが正しく渡されているかどうかを確認してから、文字列を照会する必要があります。com.gtec.GestionChangeDevise.entity.CoursChangeのようになります。c.datJourCchn = "月Apr 18 00:00:00 WAT 2016" ' – yyc1217

関連する問題