3

在此处输入图像描述

这是客户历史记录表,这些是销售活动,现在客户支付了 200 美元,适用于以下 ID

5 - 应用后余额 = 0

7 - 应用后余额 = 0

8 - 应用后余额 = 0

10 - 申请后余额 = 85.9

我们如何在休眠状态下使所有行(仅适用于余额的行)相应地更新?

4

1 回答 1

1

我不确定是否理解您的问题,但您可以尝试以下内容:

public void updateBalance(float newBalance,List<String> ids) {
    String hql = "update UserHistory set balance= :newBalance where id in (:ids)";
    Query query = session.createQuery(hql);
    query.setFloat("newBalance",newBalance);
    query.setParameterList("ids",ids);
    int rowCount = query.executeUpdate();
    System.out.println("Rows affected: " + rowCount);
}

updateBalance(0,Arrays.asList("5","7","8"));
updateBalance(85.9,Arrays.asList("10"));

如果您必须在多行上设置相同的余额,这可以正常工作。

如果每一行都可能获得新的平衡,那么您可以使用 Criteria API 使用类似的方式获取行:

Restrictions.in("id", Arrays.asList("5","7","8","10"));

一旦你有了你的实体,你就可以简单地更新它们的余额并保存它们。

于 2013-07-29T20:00:37.830 回答