Hibernate: Columna automática de versiones anulable
Pregunta
Tengo una tabla que contiene datos de gran tamaño. Quiero añadir hibernación automática de versiones de esta tabla. Sin embargo, la adición de una columna no nulo a esta tabla de versiones es muy caro debido a los datos enormes. ¿Hay una solución alternativa por lo que Hibernate puede trabajar con la columna anulable? Actualmente hibernación da NPE porque trata de incrementar un valor nulo. (Como hibernación logra esto internamente, cambiando el valor de la versión en el lado del cliente está fuera de cuestión) Cualquier otro es de versiones startegy también dan la bienvenida. Gracias de antemano
Solución
Si el sabor de la base de datos permite que usted podría utilizar la opción por defecto. Esto va en contra de 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>
Sin embargo, es posible que desee comparar su rendimiento frente a un volumen realista de datos. Puede que no resolver su problema.