Hibernate:自动版本控制Nullable Column

时间:2010-01-27 11:28:28

标签: java hibernate

我有一张包含大量数据的表格。我想在这个表中添加hibernate自动版本控制。但是由于数据庞大,在此表中添加非空列以进行版本控制非常昂贵。是否有一个解决方法,所以hibernate可以使用可空列?目前hibernate给出了NPE,因为它试图增加一个空值。 (由于hibernate在内部管理它,在客户端更改版本值是不可能的) 任何其他版本的startegy也是受欢迎的。提前致谢

1 个答案:

答案 0 :(得分:2)

如果您的数据库风格允许,您可以使用DEFAULT选项。这是针对Oracle ......

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>

但是,您可能仍希望将其性能与实际数据量进行对比。它可能无法解决您的问题。