当前位置: 首页 > 面试题库 >

为什么setParameter不设置参数?

苏季同
2023-03-14
问题内容

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

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]包含一个有效的String,它确实这样做。我尝试了其他创建查询的方法,但是这些方法都没有起作用,它们始终将服务显示为“?”,而如果使用明显的方法:

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正常工作?


问题答案:

预期以日志形式输出。Hibernate不会在查询字符串中记录参数。参数设置正确。如果未设置参数,则会看到异常。

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



 类似资料:
  • 我刚刚安装了Ubuntu desktop 12.04并通过以下方式安装了Java 6 JDK: 但是当我转到时,我没有看到一个名为的目录,所以我认为它根本不存在!?! 当我转到时,我看到: 我现在正试图将作为环境变量添加到中,以便从基于shell的Ant构建中访问它: ? ? 还有别的吗? 我所说的“”是指我在系统上安装的JDK6的顶级目录,无论它在哪里······

  • 我的脚本将,作为参数: 但当我将它作为分隔符传递时,它是空的 我知道在参数/参数解析中很特殊,但我以和引用的形式使用它。 为什么它不起作用?我使用的是Python 3.7.3 这是测试代码: 当我运行它作为它打印空。

  • 我正在使用Mac的OSX 10.9.2并尝试使用NetBeans 7.2.1和Maven 3.1.1创建一个Maven项目 在NetBeans中,我在“首选项”中正确设置了代理设置- 在usr/local/apache-maven-3.1.1/conf/settings中。我正确设置了代理设置。 它在CLI中工作,当我下载存储库时,例如: 但是,如果我尝试在NetBeans中创建项目,它不起作用,

  • 问题内容: 我们都知道Java在(被认为是“常用” )范围内为数字缓存(以及一些其他类型)。 缓存的设计如下: 我知道可以通过为JVM提供参数来扩展值: 我不明白的是为什么我们不允许覆盖该值? 请注意,我并不是想找到一种解决方法,而是要理解为什么出于某些晦涩的原因而不允许这样做。 问题答案: 发现对此已经存在未解决的RFP。 乔·达西(Joe Darcy)对这个问题发表了评论: 可以想象也可以缓存

  • 问题内容: 我知道我可以用来获取URL参数值。 是否可以使用等效方法设置/替换值? 问题答案: 不,那里没有。 您只能更改属性,不能更改参数。 实现类似目的的唯一方法是包装请求(使用为getParameter返回其他内容的类)。 相关的好奇心:一些servlet容器中有一个错误会让您这样做,但这只会导致不一致。