En primer lugar, hay un problema subyacente aquí: estás tratando el valor de las secuencias como si tuvieran algún significado. Ver el final de la respuesta.
Ahora, con Hibernate, depende de cómo haya configurado el usuario las asignaciones. Una instancia de Hibernate bien configurada usará las mismas secuencias que todo lo demás.
Desafortunadamente, la mayoría de las asignaciones no son muy buenas, o mejor dicho, creo que el comportamiento predeterminado de Hibernate es horrible y siempre debe ser anulado. La secuencia predeterminada utilizada es de hecho compartida hibernate_sequence
para todas las tablas. Sin embargo, es completamente posible tener algunas tablas usando sus propias secuencias, y otras tablas que usan el hibernate_sequence
compartido, o tener todas las tablas usando sus propias secuencias.
Para habilitar una respuesta definitiva necesitaría publicar sus asignaciones.
Si la tabla (s) que desea cambiar la generación de ID están utilizando las secuencias correctas para sus tablas en sus asignaciones de Hibernate, puede seguir adelante y ALTER SEQUENCE
esa secuencia. Si sus asignaciones se realizan a través de JPA, eso se hace con @SequenceGenerator
y @GeneratedValue
con GenerationType.SEQUENCE
. Si se realiza a través de orm.xml
, hbm.xml
o las anotaciones de Hibernate anteriores, deberá consultar el manual. O bien, si Hibernate es el único cliente que escribe en el DB, mire las secuencias para ver si están subiendo usando SELECT * FROM sequence_name
.
Si las asignaciones para la (s) tabla (s) de interés están utilizando la hibernate_sequence
compartida, probablemente no pueda hacer lo que quiera sin arreglar las asignaciones de Hibernate. Debería cambiar las asignaciones para que la asignación de las tablas de interés use una secuencia diferente, luego `LOCK TABLE
y establecer el punto de inicio para esas secuencias en la fila más grande actualmente en la tabla.
Secuencias: ¿Por qué necesidad de cambiar o reiniciar la secuencia? No debería importar, ya que una clave primaria sintética es solo un número sin sentido que se compara por igualdad con otros números sin sentido. ¿Cuál es el problema que estás tratando de resolver?
Las asignaciones se realizan con JPA, por lo que, por ejemplo, todas las clases (que se asignan a la base de datos como tablas) tienen un "ID entero = -1" definido con la asignación como "@GeneratedValue (strategy = GenerationType .SECUENCIA)".Dado que solo hay una secuencia en la base de datos (hibernate_sequence), y dado que hay lagunas entre los valores de ID en todas las tablas, creo que es seguro asumir que la secuencia predeterminada se comparte entre todos, como lo mencionó. La secuencia debe reiniciarse para todas esas tablas debido a evitar algunos conflictos en una transferencia de base de datos. – littleK
Gracias de nuevo por su ayuda, muy informativo. – littleK
@littleK No hay problema. Espero que ayude un poco. Fusionando bases de datos ... um ... "diversión". Diversión especial Espero que hayas comprado montones y montones de ginebra. –