【发布时间】:2011-08-08 21:42:10
【问题描述】:
你们有没有遇到过 HQL 查询中的参数替换不起作用的问题?
我认为我正在使用休眠进行一些从我的 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();
适用于存在此类条目的我的测试数据。
有什么建议吗?谢谢
【问题讨论】:
-
在您的 Hibernate/JPA 设置中打开“show_sql”并发布查询。
-
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=ALL 的调试输出我得到[TRACE] - returning 'TestSession - 1' as column: id3_和[TRACE] - binding 'TestSession - 1' to parameter: 1 -
您的硬编码示例传入
TestSessionId - 1,而不是查询中的TestSession - 1。会不会是这个问题? -
你救了我的夜人。但首先我会刹车。哇!
-
没问题!为了完整起见,我将我的评论转换为答案。
标签: java sql hibernate persistence hql