¿Quizás alguien se enfrentó a la misma situación? En mi proyecto tengo dos servicios. Creo tablas de base de datos usando liquebase. Al crear una tabla de permisos, inmediatamente ingreso 4 valores allí usando inserciones. y todo está zumbando. Entonces, ahora en el segundo servicio (panel de administración) creé un apish que te permite crear permisos. Cuando trato de hacer un registro en la tabla de permisos, en la que ya hay 4 registros, aparece un error ERROR: duplicate key value violates unique constraint "permissions_pkey" . El error ocurre si hago una solicitud 5 veces, el registro se agrega por 5ta vez. Gracias por adelantado)
<insert tableName="permissions"> <column name="id" value="1"/> <column name="name" value="USERS_READ"/> </insert> <insert tableName="permissions"> <column name="id" value="2"/> <column name="name" value="USERS_GET"/> </insert> <insert tableName="permissions"> <column name="id" value="3"/> <column name="name" value="USERS_CREATE"/> </insert> <insert tableName="permissions"> <column name="id" value="4"/> <column name="name" value="USERS_DELETE"/> </insert> public class Permission { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; }Si es una columna de identidad, no es necesario que proporcione valores para la columna de id en el script de liquibase. Deje que el DB los calcule por usted. Ese es el objetivo de usar una columna de identidad, después de todo.
Si necesita hacer referencia a los identificadores más adelante en el script de alguna manera, busque la forma de obtener el último identificador insertado del RDBMS que está utilizando, con bastante frecuencia habrá un método como LAST_INSERTED_ID() . O busque las filas insertadas utilizando la columna de name .
Está utilizando el tipo de generación IDENTIDAD, mapeándose al tipo de datos en serie en postgres. Cuando desea insertar permisos creados desde su panel de administración, Postgres usa una secuencia, comenzando en 1 desde su descripción y las identificaciones 1 a 4 ya están utilizadas por sus inserciones manuales. Deje las identificaciones fuera de sus inserciones manuales, o establezca explícitamente identificaciones en sus entidades creadas desde su panel de administración, por ejemplo. consultando la identificación máxima actual utilizada en la tabla. Considere cambiar el tipo de generación.