问题描述
客户端 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 (将#修改为@)