非我创建了一个数据库,前一段时间使用Hibernate(JPA),但是我并没有列入任何实体@version领域。 原来,这个项目变得非常重要,现在我需要使用版本控制(乐观锁定版本控制)。休眠:添加版本化版本DB
我知道我需要使用@version注释为每个实体添加一个新的属性(字段)。
问题: 有谁知道我该如何更新真正的数据库(mysql)以包含没有数据丢失和过多工作的版本列?
非常感谢。
非我创建了一个数据库,前一段时间使用Hibernate(JPA),但是我并没有列入任何实体@version领域。 原来,这个项目变得非常重要,现在我需要使用版本控制(乐观锁定版本控制)。休眠:添加版本化版本DB
我知道我需要使用@version注释为每个实体添加一个新的属性(字段)。
问题: 有谁知道我该如何更新真正的数据库(mysql)以包含没有数据丢失和过多工作的版本列?
非常感谢。
创建一条SQL语句,为所需的所有实体和@Version属性创建表的列。然后使用其他查询该列的所有行的值设置为1
一点点的另一种方法是创建具有默认值的列,然后删除默认的。 (Works的MYSQL)
ALTER TABLE xyz ADD version integer NOT NULL DEFAULT 1;
ALTER TABLE xyz CHANGE version version integer NOT NULL;
这种方法的purpuse是,只要你不运行的第二条语句(删除默认),旧的应用程序将运行,即使它不是一个值设置为version
列创建新对象时。
在Oracle中DDL这将是 alter table xyz add (version NUMBER default 1 not null);
对其他用户有用谢谢。 – Marcus 2011-03-22 13:11:00
非常感谢。我想过做这样的事情。但是,我不知道是否为版本字段手动插入值会导致一些麻烦。非常感谢。 – Marcus 2011-01-27 23:44:19