2011-08-08 42 views
0

你们有没有遇到过HQL-Query中的参数替换不起作用的问题?为什么HQL-Query中的参数替换失败但本机类型成功?

我使用hibernate的一些,我认为,简单的查询从我的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(); 

适用于存在此类条目的测试数据。

有什么建议吗?谢谢

+0

在您的Hibernate/JPA设置中打开“show_sql”并发布查询。 – Jeremy

+0

'select persistent0_.id as id0_,persistent0_.date as date0_,persistent0_.description as descript3_0_,persistent0_.sessionId as sessionId0_ from event persistent0_ where persistent0_.sessionId like?'和用于调试输出的log4j.logger.org.hibernate.type =所有我得到'[TRACE] - 返回'TestSession - 1'作为列:id3_'和'[TRACE] - 绑定'TestSession - 1'为参数:1' – flixt

+0

您的硬编码示例传入'TestSessionId - 1'查询中的'TestSession - 1'。这可能是问题吗? – Jeremy

回答

3

当您发布Hibernate产生的查询后,我注意到session.getId()插入TestSession - 1而不是TestSessionId - 1,这是你的硬编码示例。

相关问题