2017-07-28 30 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