2013-08-05 62 views
0

大家好,我有以下代碼:更新與HQL錯誤

tx = session.beginTransaction(); 
     Query query = session.createQuery("UPDATE com.nisid.entities.Payment set amount=:amount,paymentMethod=:method,paymentExpire=:expireDate" 
       + "Where paymentId=:payid,actionId=:actionid"); 
     query.setParameter("amount", amount); 
     query.setParameter("method", method); 
     query.setParameter("expireDate", expireDate); 
     query.setParameter("payid", projectId); 
     query.setParameter("actionid", actionId); 
     int resutl=query.executeUpdate(); 

嘗試使用HQL做一個更新,但我得到的錯誤:galArgumentException:節點遍歷不能爲空!

我在DB中的表稱爲Payment,它有一個COMPOSITE KEY(projectId,actionId) 您能否幫我進一步?

這個概念是,我有一個JSP頁面,它檢索並顯示DB從項目表,付款表和動作表中檢索信息的結果。項目與Action有多對多的關係,我使用Payment Table作爲持有另一個表的2 FK的intermetiary表。

回答

0

您錯過了where之前的空間,並在where之後將,替換爲and

Query query = session.createQuery("UPDATE com.nisid.entities.Payment set amount=:amount,paymentMethod=:method,paymentExpire=:expireDate" 
       + " Where paymentId=:payid and actionId=:actionid"); 
+0

你好我現在得到以下錯誤:重度:拋出:IllegalArgumentException類:com.nisid.entities.PaymentID,財產的getter方法:myproject的 重度:org.hibernate.PropertyAccessException:拋出:IllegalArgumentException發生調用COM的吸.nisid.entities.PaymentID.myproject –

+0

我的目的是更新3個表(支付表,項目表和動作表) 我有一個多對多的關係與項目表和動作表,我用支付表作爲中間表。是否可以如上所述進行更新? –

+0

你的對象中有吸氣劑和吸附劑嗎?你可以發佈這個代碼(尤其是com.nisid.entities.PaymentID.myproject)嗎? – Alex