我正在尝试使用乐观锁定。 我将版本列添加到我的表中如何将默认值设置为现有数据的版本列,或者这对于实体是否足够?
@Version
@Column(name = "VERSION")
private Long version = 0L;
答案 0 :(得分:0)
在数据库中执行此操作的最简单方法。
当然,您还需要添加版本列:类似于:
alter table MyEntity add column version INT(11); //no not null constraint here!
然后只需将第一个值添加到所有实体:
update MyEntity set 'version' = 1;
现在您还可以添加非空约束
alter table MyEntity modify version INT(11) NOT NULL;
(我希望您在添加版本列时停止应用程序)。
答案 1 :(得分:0)
如果将 Oracle 作为数据库 - 为可空列使用 values 选项
alter table MyEntity add column version INT(11) default 0 with values
对于非空列 - 数据库将更新为现有行的默认值
alter table MyEntity add column version INT(11) not null default 0
<块引用>
从 Oracle-11g 开始,从元数据中检索默认值 来自现有列上的空值,而不是更新现有列 行。看 - https://chandlerdba.com/2014/10/30/adding-not-null-columns-with-default-values/