2

我正在使用以下代码(尝试)查询数据库:

Query query = session.createQuery("from Trace where service = :service");
query.setParameter("service", clientRequest[0]);

其中 clientRequest[0] 来自字符串数组,服务变量是我的 POJO 中的字符串,映射到我的 MySQL 数据库中的 VARCHAR(45)。

当我运行此代码时,Hibernate 将执行的 SQL 查询显示为:

Hibernate: select trace0_.traceId as traceId0_, trace0_.service as service0_, trace0_.longitude as longitude0_, trace0_.latitude as latitude0_, trace0_.timestamp as timestamp0_ from trace trace0_ where trace0_.service=?

这让我相信 clientRequest[0] 的值没有被正确设置为参数。

我已经检查了 clientRequest[0] 包含一个有效的字符串,它确实如此。我尝试了其他创建查询的方法,但这些方法都没有奏效,它们总是将服务显示为“?”,而如果我使用明显的:

Query query = session.createQuery("from Trace where service = 21");

它自然给出了正确的响应

Hibernate: select trace0_.traceId as traceId0_, trace0_.service as service0_, trace0_.longitude as longitude0_, trace0_.latitude as latitude0_, trace0_.timestamp as timestamp0_ from trace trace0_ where trace0_.service=21

什么可能会阻止 setParamater 正常工作?

4

1 回答 1

6

预计会在日志中输出。Hibernate 不会在查询字符串中记录参数。参数设置正确。未设置参数时,您会看到异常。

如果您还想记录参数值,可以从此处找到一些说明。

于 2012-06-11T17:51:57.100 回答