Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O elemento de initialValue de @TableGenerator não é suportado no Hibernate JPA?


O que se trata do primeiro valor sendo 1 em vez de 1001 é o bug do Hibernate HHH-4228 , com status Não será corrigido . O primeiro valor correto no seu caso é 1001 em vez de 1000, porque initialValue inicializa a coluna que armazena último valor retornado (e não o próximo valor a ser retornado).

Usar o seguinte em persistence.xml (como também sugerido no relatório de bug) corrigirá o problema com o primeiro valor:
<property name="hibernate.id.new_generator_mappings" value="true"/>

Significado de allocationSize é provavelmente incompreendido em questão. Não é passo para incrementar. Significa quantos valores são alocados com uma consulta de banco de dados da tabela. Isso é uma otimização para evitar consultas adicionais sempre que o valor de id for necessário para uma nova entidade.

O produto secundário é que o reinício da aplicação causa frequentemente furos na sequência:
  1. initialValue =1000,allocationSize =100
  2. Use o valor 1001 (=> valor em valueColumn é atualizado para 1100).
  3. encerrar e iniciar o aplicativo
  4. o próximo valor será 1101, não 1002.