Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

522
Vistas
Cómo migrar [DDL] de identidad de tipo de generación a secuencia de tipo de generación para postgres db

A partir de ahora estoy generando una identificación usando

 @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;

la secuencia generada en DB es como:

 CREATE SEQUENCE public.table_name_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; ALTER SEQUENCE public.table_name_id_seq OWNED BY public.table_name.id; ALTER TABLE ONLY public.table_name ALTER COLUMN id SET DEFAULT``nextval('public.table_name_id_seq'::regclass);

o en algunos lugares en la definición misma:

 CREATE TABLE "public.table_name" ( "id" int8 NOT NULL DEFAULT nextval('table_name_id_seq'::regclass), "some_column" varchar(255), PRIMARY KEY ("id") );

Estoy usando hibernate como proveedor de JPA, necesitaba habilitar el procesamiento por lotes de inserción y actualización, por lo que quiero cambiar el tipo de generación a SEQUENCE desde IDENTITY .

Después de cambiar a la secuencia de tipo de generación [en hibernación] y usar una secuencia anterior [de postgres], veo que se genera una identificación extraña. Este no es el comportamiento esperado.

 @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "table_name_id_seq ") private Long id;

ingrese la descripción de la imagen aquí

Los ID que están resaltados en amarillo se crean después de usar la secuencia de tipo de generación. Esperaba que la identificación después de 23 fuera 24 y no -22.

¿Cómo puedo arreglar esto? ¿Cómo puedo cambiar sin problemas de IDENTIDAD a SECUENCIA? ¿Cuál es el DDL adecuado?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Respondiendo a esta parte de tu pregunta:

¿Cómo puedo cambiar sin problemas de IDENTITY a SEQUENCE ? ¿Cuál es el DDL adecuado?

Debes hacer lo siguiente:

  1. Suelte el valor predeterminado de la columna table_name.id :
 alter table only table_name alter column id drop default;
  1. Corrija su mapeo para el campo de id :
 @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "my_generator") @SequenceGenerator(name = "my_generator", sequenceName = "table_name_id_seq", allocationSize = 1) private Long id;

Tenga en cuenta que un tamaño de allocationSize debe ser igual al INCREMENT BY de su definición de secuencia.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda