2017-07-28 20 views
0

“查询参数ID在查询执行期间提供的参数列表中没有找到”我有叫Pilot具有以下定义命名查询的实体类:Java的JPA -

@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. 
... 

可能是什么问题呢?

回答

1

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

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

您设置id上fQuery两次。尝试更改为飞行员一个pQuery。像这样:

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

是的,有点尴尬,但这就是它:当我让它标记为“接受”,当它让我。谢谢! – Gambit2007

+1

@ Gambit2007 - 发生在我们身上。有时你只需要另一双眼睛。 – Todd