2010-01-27 60 views
3

我有一張包含大量數據的表。我想添加休眠自動版本到這個表。但是,由於數據量龐大,向此表添加非空列用於版本管理非常昂貴。有沒有解決方法,讓休眠可以使用空列?目前休眠給NPE,因爲它試圖增加一個空值。 (由於hibernate在內部管理這個,所以在客戶端更改版本值是沒有問題的) 任何其他版本控制startegy也是受歡迎的。在此先感謝休眠:自動版本控制空列

回答

2

如果您的數據庫的風格允許它可以使用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> 

但是,您可能仍然希望將其性能與實際數據量進行基準比較。它可能無法解決您的問題。

+0

感謝您的回答。 – anergy 2010-01-28 15:44:42

+0

這隻適用於Oracle 11g,其中添加默認值是恆定時間操作,請參閱http://www.dba-oracle.com/t_oracle_column_default_value.htm – Rico 2012-07-31 10:08:21