如何为现有数据的版本列设置默认值?

时间:2016-09-15 11:22:47

标签: spring hibernate jpa optimistic-locking

我正在尝试使用乐观锁定。 我将版本列添加到我的表中如何将默认值设置为现有数据的版本列,或者这对于实体是否足够?

@Version
@Column(name = "VERSION")
private Long version = 0L;

2 个答案:

答案 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/