Pergunta

Eu tenho uma tabela que contém dados enormes. Quero adicionar a versão automática do Hibernate a esta tabela. Mas adicionar uma coluna não nula a esta tabela para versão é muito caro devido a dados enormes. Existe uma solução alternativa para que o hibernato possa funcionar com coluna anulável? Atualmente, o Hibernate fornece NPE porque tenta incrementar um valor nulo. (Como o Hibernate gerencia isso internamente, alterar o valor da versão no lado do cliente está fora de questão) Qualquer outra versão Starteggy também é bem -vinda. desde já, obrigado

Foi útil?

Solução

Se o seu sabor do banco de dados permitir, você poderá usar a opção padrão. Isso é contra o 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>

No entanto, você ainda pode comparar seu desempenho em relação a um volume realista de dados. Pode não resolver seu problema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top