3
我有一张包含大量数据的表。我想添加休眠自动版本到这个表。但是,由于数据量庞大,向此表添加非空列用于版本管理非常昂贵。有没有解决方法,让休眠可以使用空列?目前休眠给NPE,因为它试图增加一个空值。 (由于hibernate在内部管理这个,所以在客户端更改版本值是没有问题的) 任何其他版本控制startegy也是受欢迎的。在此先感谢休眠:自动版本控制空列
我有一张包含大量数据的表。我想添加休眠自动版本到这个表。但是,由于数据量庞大,向此表添加非空列用于版本管理非常昂贵。有没有解决方法,让休眠可以使用空列?目前休眠给NPE,因为它试图增加一个空值。 (由于hibernate在内部管理这个,所以在客户端更改版本值是没有问题的) 任何其他版本控制startegy也是受欢迎的。在此先感谢休眠:自动版本控制空列
如果您的数据库的风格允许它可以使用DEFAULT选项。这是针对甲骨文的...
SQL> create table t23 as select object_id as id from user_objects;
Table created.
SQL> desc t23
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER
SQL> alter table t23 add hibernate_version_number number default 0 not null;
Table altered.
SQL> desc t23
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER
HIBERNATE_VERSION_NUMBER NOT NULL NUMBER
SQL> select count(*) from t23 where hibernate_version_number = 0;
COUNT(*)
----------
504
SQL>
但是,您可能仍然希望将其性能与实际数据量进行基准比较。它可能无法解决您的问题。
感谢您的回答。 – anergy 2010-01-28 15:44:42
这只适用于Oracle 11g,其中添加默认值是恒定时间操作,请参阅http://www.dba-oracle.com/t_oracle_column_default_value.htm – Rico 2012-07-31 10:08:21