Hibernate:将版本控制添加到非版本数据库
不久前,我使用hibernate(JPA)创建了一个db,但是我没有为任何实体包含@version字段。 事实证明,这个项目变得很重要,现在我需要使用版本控制(带有乐观锁定的版本控制) 我知道我需要为带有@version注释的每个实体添加一个新属性(字段) 问题: 有人知道如何更新真实数据库(mysql)以包含版本列而不丢失数据和做太多工作吗Hibernate:将版本控制添加到非版本数据库,hibernate,jpa,locking,versioning,Hibernate,Jpa,Locking,Versioning,不久前,我使用hibernate(JPA)创建了一个db,但是我没有为任何实体包含@version字段。 事实证明,这个项目变得很重要,现在我需要使用版本控制(带有乐观锁定的版本控制) 我知道我需要为带有@version注释的每个实体添加一个新属性(字段) 问题: 有人知道如何更新真实数据库(mysql)以包含版本列而不丢失数据和做太多工作吗 非常感谢。创建一条SQL语句,该语句为您要创建的所有实体的表和@Version属性创建列。然后使用其他查询将所有行的此列的值设置为1 另一种方法是使用默认
非常感谢。创建一条SQL语句,该语句为您要创建的所有实体的表和@Version属性创建列。然后使用其他查询将所有行的此列的值设置为1 另一种方法是使用默认值创建列,然后删除默认值。(适用于MYSQL)
这种方法的目的是,只要不运行第二条语句(删除默认值),旧的应用程序就会运行,即使它在创建新对象时没有为
version
列设置值。创建一条SQL语句,该语句为所有要创建的实体的表和@version属性创建列。然后使用其他查询将所有行的此列的值设置为1
另一种方法是使用默认值创建列,然后删除默认值。(适用于MYSQL)
这种方法的目的是,只要不运行第二条语句(删除默认值),旧的应用程序就会运行,即使它在创建新对象时未将值设置为version
列。在Oracle DDL中也是如此
alter table xyz add(版本号默认值1不为空)代码>在Oracle DDL中
alter table xyz add(版本号默认值1不为空)代码>非常感谢。我想过做这样的事。然而,我不知道手动为version字段插入值是否会引起一些麻烦。再次非常感谢。非常感谢。我想过做这样的事。然而,我不知道手动为version字段插入值是否会引起一些麻烦。再次非常感谢。对其他用户有用。谢谢。对其他用户有用。谢谢
ALTER TABLE xyz ADD version integer NOT NULL DEFAULT 1;
ALTER TABLE xyz CHANGE version version integer NOT NULL;