2013-03-20 47 views
0

我遇到hql问题。使用加入休眠(HQL)进行更新

我想写一个查询,更新attribut,这是基于另一个表上的值。

这是我的例子,我有这两个表:客户端和Widhdrawal。

客户:idClient,名称...

Widhdrawal:idWidh,成本和idClient(外键)

现在,如果我会更新客户端,(idClient = 5的条件下,例如),我不能。

这个我试过,但不成功:

 String hql = "UPDATE Widhdrawal W set W.cost = :salary " + 
    "where W.Client.id_client = :employee_id)"; 

    Query query = session.createQuery(hql); 
    query.setParameter("salary", 1000); 
    query.setParameter("employee_id", 5); 
    int result = query.executeUpdate(); 

我希望有人能有一些建议,谢谢。

回答

0

试试这个:

String hql = "UPDATE Widhdrawal W set W.cost = :salary " + 
      "where W.idClient = :employee_id)"; 
+0

dosen't工作。 “无法解析属性:的idClient:com.isamm.beans.Widhdrawal” 我认为这是因为在Widhdrawal attribut的: ' 公共类Widhdrawal { \t私人诠释idWidh; \t private String libelle; \t私人字符串日期; \t private double somme; \t私人客户端客户端; ' – wadjo 2013-03-20 12:25:39

0

谢谢你,我找到了解决办法。 我希望这可以帮助其他人... 这个问题是du lowerCase。

   String hql = "UPDATE Widhdrawal W set W.cost= :newCost " + 
         "where W.client.id_client = :id_cl"; 

      Query query = session.createQuery(hql); 
0

尝试这种方式 -

字符串HQL = “UPDATE Widhdrawal硬件置W.cost =:工资” + “,其中W.id_client =(从选择客户id_client其中id_client =:EMPLOYEE_ID) “;

提款和客户端是POJO类名称。