Java JPA - "Query argument id not found in the list of parameters provided during query execution"

标签 java jpa

我有一个名为 Pilot 的实体类,具有以下定义的命名查询:

@NamedQuery(name="Pilot.findById", query="SELECT p FROM Pilot p where p.id = :id")

另一个名为 Flight 的命名查询:

@NamedQuery(name="Flight.findById", query="SELECT f FROM Flight f where f.id = :id")

然后我有一个方法可以执行以下操作:

TypedQuery<Flight> fQuery = em.createNamedQuery("Flight.findById", Flight.class);
fQuery.setParameter("id", Integer.parseInt(flightId));

Flight f = fQuery.getSingleResult(); 

TypedQuery<Pilot> pQuery = em.createNamedQuery("Pilot.findById", Pilot.class);
fQuery.setParameter("id", Integer.parseInt(pilotId));

Pilot p = pQuery.getSingleResult(); 

但由于某种原因,当我调用它时,我收到错误:

...
Caused by: java.lang.IllegalStateException: Query argument id not found in the list of parameters provided during query execution.
...

可能是什么问题?

最佳答案

看起来像是剪切和粘贴错误...

TypedQuery<Pilot> pQuery = em.createNamedQuery("Pilot.findById", Pilot.class);
fQuery.setParameter("id", Integer.parseInt(pilotId));
^^^^^^

您在 fQuery 上设置了两次 ID。尝试将飞行员更改为 pQuery。像这样:

TypedQuery<Pilot> pQuery = em.createNamedQuery("Pilot.findById", Pilot.class);
pQuery.setParameter("id", Integer.parseInt(pilotId));
^^^^^^

关于Java JPA - "Query argument id not found in the list of parameters provided during query execution",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45379818/

相关文章:

java - 如何在 Play! 中插入大量实体?工作?

java - JPA 认为我正在删除一个分离的对象

java - JPA:如何急切地获取嵌入式元素集合

java - 在java中使用正则表达式。将绳子绕在管道上

java - 为什么代码片段无法检测到行尾

java - Tomcat 在使用 Jersey 的 Restful Web 服务中启动错误

java - 如何使用 JUnit 对缓存控制 header 进行单元测试?

java - Hibernate - @ElementCollection - 奇怪的删除/插入行为

sql - JPA、SQlite 没有这样的表 : SEQUENCE

java - 用java发送电子邮件