"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo garantizar que Hibernate preserva los valores de Enum al asignar a una columna MySQL enum?

¿Cómo garantizar que Hibernate preserva los valores de Enum al asignar a una columna MySQL enum?

Publicado el 2025-02-27
Navegar:325

How to Ensure Hibernate Preserves Enum Values When Mapping to a MySQL Enum Column?

preservando valores de enum en Hibernate: Solución de problemas de columna incorrecta

en el ámbito de la persistencia de datos, asegurando la compatibilidad entre modelos de datos, esquemas de dato y sus mapas respectivas es esencial. Cuando se trabaja con tipos enumerados en Java, es crucial establecer cómo hibernado asigna estos enumeros a la base de datos subyacente.

en su caso, ha definido una columna MySQL como un enum. Sin embargo, se encuentra con el siguiente error: "Tipo de columna incorrecta en MyApp.person para el género de la columna. Encontrado: Enum, esperado: Integer". This error arises when Hibernate expects the Gender column to be an integer due to the enum being treated as an ordinal or a string, depending on the @Enumerated annotation's specification.

To resolve this issue, you can explicitly specify the column's definition using the columnDefinition attribute:

@Column(columnDefinition = "enum('MALE','FEMALE')")
@Enumerated(EnumType.STRING)
private Gender gender;

proporcionando una definición de columna, le indica a Hibernate que no adivine el tipo de columna, sino para adherirse a la definición especificada.

alternativamente, si no está usando Hibernate para generar su esquema, puede eliminar los valores de la definición de la columna para configurarlos en los valores arbitrarios:

[&] [&] "Enum ('Dummy')") @Enumerated (enumType.string) Privado ManyValueDenum ManyValueDenum;
@Column(columnDefinition = "enum('DUMMY')")
@Enumerated(EnumType.STRING)
private ManyValuedEnum manyValuedEnum;
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3