查看: 223|回复: 3

PAI无效

升级   1.99%

4

主题

7

回帖

199

积分

注册会员

Rank: 2

积分
199
发表于 6 天前 | 显示全部楼层 |阅读模式
版本 9.5.1
9.2升级上来的

name:        rowSave
path:        jaxrs/table/{tableFlag}/row/save
type:        POST
description:        指定表中批量保存或更新数据.
不传ID可以保存
30条都传ID+数据不可以保存
29条都传ID+数据 +1条不传ID可以保存



回复

使用道具 举报

升级   1.99%

4

主题

7

回帖

199

积分

注册会员

Rank: 2

积分
199
发表于 6 天前 | 显示全部楼层
if (jsonElement.isJsonArray()) {
    List<JpaObject> updateList = new ArrayList<>();
    List<JpaObject> insertList = new ArrayList<>();
   
    jsonElement.getAsJsonArray().forEach(o -> {
        JpaObject jo = gson.fromJson(o, cls);
        
        if (o.getAsJsonObject().has("id") && jo.getId() != null) {
            try {
                JpaObject oldjo = emc.find(jo.getId(), cls);
                if (oldjo != null) {
                    // 更新操作
                    jo.copyTo(oldjo, JpaObject.FieldsUnmodify);
                    updateList.add(oldjo);
                } else {
                    // ID存在但数据库中不存在,按新增处理
                    insertList.add(jo);
                }
            } catch (Exception e) {
                // 查找失败,按新增处理
                insertList.add(jo);
            }
        } else {
            // 没有ID,按新增处理
            insertList.add(jo);
        }
    });
   
    // 先处理更新
    if (!updateList.isEmpty()) {
        emc.beginTransaction(cls);
        for (JpaObject jo : updateList) {
            emc.check(jo, CheckPersistType.all); // 使用check而不是persist
        }
        emc.commit();
    }
   
    // 再处理新增
    os.addAll(insertList);
}
回复

使用道具 举报

升级   100%

6

主题

1770

回帖

1582

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1582
发表于 6 天前 | 显示全部楼层
报错信息发看看,是不是id 校验规则没通过,可以看看忽略校验规则
回复

使用道具 举报

升级   1.99%

4

主题

7

回帖

199

积分

注册会员

Rank: 2

积分
199
发表于 6 天前 | 显示全部楼层
xadmin 发表于 2026-1-5 15:31
报错信息发看看,是不是id 校验规则没通过,可以看看忽略校验规则

没有报错,是代码BUG,在处理JSON数组时,找到现有记录后直接return,跳过了后续的保存逻辑
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系客服 关注微信 下载APP 返回顶部 返回列表
viewthread