我正在使用以下代码(尝试)查询数据库:
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 正常工作?