"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-06
Navegar:445

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

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

en el reino de la persistencia de datos, asegurando la compatibilidad entre modelos de datos, esquemas de dataBase Schemas y sus respectivas mapeos son esenciales. 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 enum y creado un enume correspondiente en su Java en su Java código. 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". Este error surge cuando Hibernate espera que la columna de género sea un entero debido a que el enum se trata como un ordinal o una cadena, dependiendo de la especificación @Enumerated Annotation.

para resolver este problema, puede especificar explícitamente Definición de la columna usando el atributo ColumnDefinition:

@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 que se adhiera a la definición especificada.

Alternativamente, si no está usando Hibernate para generar para generar para generar Su esquema, puede eliminar la necesidad de valores de definición de columna configurándolos en valores arbitrarios:

@Column(columnDefinition = "enum('DUMMY')")
@Enumerated(EnumType.STRING)
private ManyValuedEnum manyValuedEnum;

De esta manera, puede asegurarse de que los valores de enum se conserven en su enum de Java mientras sincronizan su licencia o scripts SQL en consecuencia.

Ú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