Hibernate更新无法正常工作

时间:2014-09-08 06:48:07

标签: java hibernate

我使用以下方法更新数据库中的数据。

     String hql = "UPDATE EmployeeSalary set salary = :sl,"
                        + "monthYr=:dt "
                        + "WHERE id =:id and client.id=:cid";
            for (EmployeeSalary e : eList) {
                Query query = session.createQuery(hql);

                query.setParameter("sl", e.getSalary());
                query.setParameter("dt", e.getMonthYr());
                query.setParameter("id", e.getId());
                query.setParameter("cid", e.getClient().getId());

                int result = query.executeUpdate();
                System.out.println("result is " + result);
                if (eAttList.size() % 20 == 0) {
                    session.flush();
                    session.clear();
                }
            }

代码是否有任何问题。

执行时显示

结果为0

如何解决上述问题。

1 个答案:

答案 0 :(得分:1)

关于更新查询的

The documentation说:

  

可以在批量HQL查询中指定“隐式或显式的连接语法形式”。子查询可以在where子句中使用,子子查询本身可以包含连接。

您的查询似乎违反了此规则:client.id=:cid是客户端实体的隐式连接。

请注意,你的生活很艰难。您可以通过会话中的ID(使用Session.get())简单地获取实体,然后更新它。更新查询对于一次更新多行非常有用。