Spring Data JDBC:我可以在客户端而不是在服务器上创建我的 UUID PK 吗?

问题描述

客户端 PK 创建非常普遍,尤其是在使用 UUID 作为键时。不幸的是,我看不到 Spring Data JDBC 支持的位置。我收到了这些错误

Failed to execute DbAction.UpdateRoot(entity=my.agg.root.ClassName@28f2d8e6)

DbAction.UpdateRoot 查找 Spring Data JDBC 源,我在 o.s.d.relational.core.Conversion.WritingContext 中找到了 this

    List<DbAction<?>> save() {

        List<DbAction<?>> actions = new ArrayList<>();
        if (isNew(root)) {

            actions.add(setRootAction(new DbAction.InsertRoot<>(entity)));
            actions.addAll(insertReferenced());
        } else {

            actions.add(setRootAction(new DbAction.UpdateRoot<>(entity)));
            actions.addAll(deleteReferenced());
            actions.addAll(insertReferenced());
        }

        return actions;
    }

我没有深入研究 isNew(),但如果它只是对我对象的 null 字段进行简单的 @Id 检查,那么也许 repo 会始终将我的对象标记为存在,并且如果我的 UPDATE 已设置,请尝试使用 INSERT 而不是 @Id在这种情况下,我运气不好。

我应该在创建对象时使用 @Query 编写自己的 INSERT 方法吗?

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)