我的查詢是這樣的:參數不存在作爲一個已命名的參數
Query query1 = session.createQuery("select c.email from Contact c where c.contactNo =:contactNo");
query1.setInteger("contactNo", 22);
我得到的錯誤是:
異常在線程「主」 java.lang.IllegalArgumentException異常: 參數contactNo不存在作爲一個命名參數[選擇觸點C c.email其中c.contactNo =?]
據實效F ine with
Query query = session.createQuery("select c.email from Contact c where c.contactNo = ?");
query.setInteger(0, 22);
爲什麼第一個查詢不起作用?
我認爲你必須在你的問題是錯誤的。您顯示的錯誤表明,「contactNo」不作爲查詢中的命名參數存在。那麼,在你的查詢中(根據你突出顯示的日誌),你沒有「contactNo」,因此正確拋出異常。它可能發生了,你認爲你有一個命名參數查詢(你也已經顯示在你的第一行問題中),但在你的實際代碼中你真的有一個數字參數,因此你看到第二個查詢運行良好。 – Rash