首页 > 解决方案 > Spring中的@Version注解

问题描述

嘿伙计们,我如何使用@version 注释,而不是替换修改后的数据,而是在数据库中添加一个具有相同标识符和递增版本的新行。例如,这里的 id 173 是重复的,唯一的变化是版本,这是我的目标。

在此处输入图像描述

标签: jpa

解决方案


@Version旨在用于乐观锁定,不应用于此目的。

正如Taylor评论的那样,您可以将 Hibernate Envers 用于非常相似的事情。它将生成一个包含所有版本的单独表,而将实体映射到的主表仍然只有当前版本。

如果您希望所有这些实体实际上都在同一个表中,您只需将现有 id 加上一个附加版本字段作为 id,然后复制实体并在更改之前更新版本。此处的版本字段表示您用作版本的普通可能数字字段,它不能用 注释@Version

如果您真的想滥用该@Version属性,您可以在基础表上创建一个触发器,该触发器在每次更新时创建一个新行。


推荐阅读