sql >> Base de Datos >  >> RDS >> Mysql

¿El elemento de initialValue de @TableGenerator no es compatible con Hibernate JPA?

Lo que se trata de que el primer valor sea 1 en lugar de 1001 es el error de Hibernate HHH-4228 , con el estado No se solucionará . El primer valor correcto en su caso es 1001 en lugar de 1000, porque initialValue inicializa la columna que almacena último valor devuelto (y no el siguiente valor a devolver).

Usar lo siguiente en persistence.xml (como también se sugiere en el informe de errores) solucionará el problema con el primer valor:

<property name="hibernate.id.new_generator_mappings" value="true"/>

Significado de allocationSize es probable que se malinterprete en cuestión. No es paso a incrementar. Significa cuántos valores se asignan con una consulta de base de datos de la tabla. Esto es más bien una optimización para evitar consultas adicionales cada vez que se necesita un valor de identificación para una nueva entidad.

El producto secundario es que el reinicio de la aplicación a menudo causa agujeros en la secuencia:

  1. valor inicial =1000, tamaño de asignación =100
  2. Utilice el valor 1001 (=> el valor en valueColumn se actualiza a 1100).
  3. apagar e iniciar la aplicación
  4. el siguiente valor será 1101, no 1002.