Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate:自动版本控制可空列_Java_Hibernate - Fatal编程技术网

Java Hibernate:自动版本控制可空列

Java Hibernate:自动版本控制可空列,java,hibernate,Java,Hibernate,我有一个包含大量数据的表格。我想将hibernate自动版本控制添加到此表中。但是,由于数据量巨大,向该表中添加NOTNULL列进行版本控制的成本非常高。是否有一种变通方法可以让hibernate处理可为null的列?目前hibernate提供NPE是因为它试图增加一个空值。 (由于hibernate在内部进行管理,更改客户端的版本值是毫无疑问的) 任何其他版本的startegy都是受欢迎的。提前感谢如果您的数据库风格允许,您可以使用默认选项。这是针对甲骨文的 SQL> create ta

我有一个包含大量数据的表格。我想将hibernate自动版本控制添加到此表中。但是,由于数据量巨大,向该表中添加NOTNULL列进行版本控制的成本非常高。是否有一种变通方法可以让hibernate处理可为null的列?目前hibernate提供NPE是因为它试图增加一个空值。 (由于hibernate在内部进行管理,更改客户端的版本值是毫无疑问的)
任何其他版本的startegy都是受欢迎的。提前感谢

如果您的数据库风格允许,您可以使用默认选项。这是针对甲骨文的

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>

但是,您可能仍然希望根据实际的数据量对其性能进行基准测试。这可能无法解决您的问题。

这只适用于Oracle 11g,在Oracle 11g中,添加默认值是一个固定时间操作,请参阅