Cómo añadir una nueva columna en un pojo existente: Spring boot
Estoy trabajando en Spring Boot y usando una base de datos Postgres.
Tengo un requerimiento en el que necesito añadir una nueva columna en una tabla existente.
@Entity
@TypeDefs({@TypeDef(name = "EnumUserType", typeClass = EnumUserType.class)})
public class P_user {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "p_user_row_id_generator")
@SequenceGenerator(name = "p_user_row_id_generator",
sequenceName = "p_user_row_id_sequence",
allocationSize = 50)
@Column(name = "row_id")
private Long rowId;
private UUID p_Id;
private String username;
@Type(type = "EnumUserType", parameters = {
@Parameter(name = "enumClassName", value = "P_userRole")})
private P_userRole role;
private Date startTime;
private Date endTime;
// nueva columna a añadir
private UUID groupId;
}
Estoy usando un script para alterar dinámicamente la tabla en la base de datos.
En el archivo xyz.sql:
ALTER TABLE p_user ADD COLUMN groupId UUID;
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating
bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.internal.command.DbMigrate$FlywayMigrateSqlException:
La migración xyz.sql ha fallado
-----------------------------------------------
SQL State : 42701
Error Code : 0
Message : ERROR: la columna "groupid" de la relación "p_user" ya existe
Location : ../db/migration/xyz.sql
Line : 4
Statement : ALTER TABLE p_user ADD COLUMN groupId UUID
Si no ejecuto este script, obtengo el siguiente error
ERROR: la columna "group_id" de la relación "p_user" no existe.
¿Cómo puedo añadir una nueva columna a la entidad existente y también alterar la tabla en la base de datos?
¡Por favor, ayúdame aquí! ¡Cualquier sugerencia es bienvenida!
¡Gracias de antemano!
davy.ai
Para agregar una nueva columna a una tabla existente en Spring Boot y PostgreSQL, puedes seguir los siguientes pasos:
Si encuentras errores como “la columna ya existe” o “la columna no existe”, asegúrate de que el script de migración y la clase entidad sean consistentes y que el esquema de la base de datos esté actualizado. Es posible que tengas que modificar manualmente el script o la clase entidad para que coincidan con el estado actual de la base de datos.</contraseña>