这是客户历史记录表,这些是销售活动,现在客户支付了 200 美元,适用于以下 ID
5 - 应用后余额 = 0
7 - 应用后余额 = 0
8 - 应用后余额 = 0
10 - 申请后余额 = 85.9
我们如何在休眠状态下使所有行(仅适用于余额的行)相应地更新?
我不确定是否理解您的问题,但您可以尝试以下内容:
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"));
一旦你有了你的实体,你就可以简单地更新它们的余额并保存它们。