2011-08-08 8 views
0

HQL-Queryのパラメータ置換がうまくいかないという問題があったのですか?HQL-Queryのパラメータ置換に失敗したのにネイティブタイプが成功するのはなぜですか?

私はMySQLデータベースからエンティティを取得する簡単なクエリをいくつか考えています。ここで

はクエリです:

entityManager. 
      createQuery("SELECT c FROM PersistentEvent c WHERE c.sessionId LIKE :sessionId"). 
      setParameter("sessionId", session.getId()).getResultList(); 

は結果を得ることはありません!デバッグ中に私はを見たsession.getId()正しい値を返します。

entityManager. 
       createQuery("SELECT c FROM PersistentEvent c WHERE c.sessionId LIKE :sessionId"). 
       setParameter("sessionId", "TestSessionId - 1").getResultList(); 

このようなエントリが存在するmy testdataで動作します。

提案がありますか?ありがとう

+0

Hibernate/JPA設定で "show_sql"をオンにしてクエリを投稿してください。 – Jeremy

+0

'persistent0_.idをid0_、persistent0_.dateをdate0_、persistent0_.descriptionをdescript3_0_、persistent0_.sessionIdをsessionId0_とし、persistent0_をpersistent0_.sessionIdとしますか? '、およびlog4j.logger.org.hibernate.typeのデバッグ出力を選択します。 = ALL私は '[TRACE]を取得します: 'TestSession - 1'を列:id3_'と' [TRACE] - 'TestSession - 1'をパラメータ:1'に返します。 – flixt

+0

あなたのハードコードされた例は 'TestSessionId - 1'クエリ中の 'TestSession - 1'を返します。それが問題だろうか? – Jeremy

答えて

3

Hibernateが生成していたクエリを投稿した後で、TestSessionId - 1の代わりにが挿入されていることに気付きました。これはハードコードされた例です。

関連する問題