Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

528
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda