2013-03-20 3 views
0

У меня проблема с проблемой hql.Обновление с объединением hibernate (HQL)

Я хотел бы написать запрос, который обновляет атрибут, и это основано на значении в другой таблице.

Это мой пример, у меня есть эти две таблицы: Client and 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" Я думаю, что это из-за attribut в Widhdrawal: ' общественного класса Widhdrawal { \t частных Int idWidh; \t частный String libelle; \t частная дата строки; \t частный двойной соме; \t частный клиент клиента; ' – wadjo

0

Спасибо, я нашел решение. Я надеюсь, что это может помочь другим людям ... Эта проблема заключается в том, чтобы спустить нижний регистр.

   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 установлен W.cost =: оклад +" «, где W.id_client = (выберите id_client от клиента, где id_client =: employee_id) «;

Widhdrawal и клиент - это имя класса POJO.