gpt4 book ai didi

java - 实体需要什么状态才能触发【更新】操作?

转载 作者:太空宇宙 更新时间:2023-11-04 09:15:31 25 4
gpt4 key购买 nike

版本:1.1.2.RELEASE

我有以下简单的测试代码

    JobTask task1 = new JobTask(null, "task1", "sync files", JobStatus.RUNNING);
JobTask savedTask = jobTaskReponsitory.save(task1);
savedTask.setTaskDesc("update descript.");
jobTaskReponsitory.save(savedTask);

JobTask聚合根包含@Id @Version @CreatedDate @CreatedBy @LastModifiedBy @LastModifiedDate注释。

  1. 为什么总是触发InsertRoot操作?在第二个save()操作中,实体已经有了ID值,我理解此时应该触发update()操作。
  2. 有关于 @Version 的可用文档吗?我没有找到任何官方信息。

最佳答案

第一个问题的答案就在第二个问题中。

Spring Data JDBC 尚不支持乐观锁定/@Version 属性。这就是为什么没有关于它的官方文档。 There is a PR request though .

这也意味着版本属性将保持不变 null0,具体取决于其类型。但将检查以确定一个实体是否被视为新实体:如果 ID 为 null0,或者存在用 @Version 注释且为 null0 的属性,则实体被视为新实体。

由于在您的情况下第二个条件始终保持true,Spring Data JDBC 将始终执行插入

为了解决这种情况,我建议暂时删除版本属性或至少删除 @Version 注释,因为乐观锁定无论如何都没有实现,它可能没有值(value)。

关于java - 实体需要什么状态才能触发【更新】操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59064698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com