sql >> Base de Datos >  >> RDS >> Mysql

Hibernate JPA, MySQL y TinyInt(1) para Boolean en lugar de bit o char

La anotación @Type es una anotación de Hibernate.

En JPA2 completo (con Hibernate 3.6+ ), la forma de asignar un campo booleano a un tipo SQL TINYINT(1) en lugar de BIT(1), es usar el atributo columnDefinition.

@Column(nullable = false, columnDefinition = "TINYINT(1)")
private boolean enabled;

nb:el atributo de longitud parece no tener efecto en este caso, entonces usamos (1) sintaxis.

Con Hibernate 4.0+ , este tipo de sintaxis puede causar un error de tiempo de ejecución como este:

Wrong column type Found: bit, expected: TINYINT(1)

Parece que en este caso, tu única forma es usar tinyInt1isBit=false en la cadena de conexión de la fuente de datos MySQL como esta:

jdbc:mysql://server_host:3306/database?tinyInt1isBit=false

Por cierto, ahora puede usar el atributo de longitud de esta manera:

@Column(nullable = false, columnDefinition = "TINYINT", length = 1)
private boolean enabled;