Mysql
 sql >> Base de données >  >> RDS >> Mysql

Hibernate JPA, MySQL et TinyInt(1) pour Boolean au lieu de bit ou char

L'annotation @Type est une annotation Hibernate.

En JPA2 complet (avec Hibernate 3.6+ ), la façon de mapper un champ booléen à un type SQL TINYINT(1) au lieu de BIT(1) consiste à utiliser l'attribut columnDefinition.

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

nb :l'attribut de longueur semble n'avoir aucun effet dans ce cas, alors nous utilisons la syntaxe (1).

Avec Hibernate 4.0+ , ce type de syntaxe peut provoquer une erreur d'exécution comme celle-ci :

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

Il semble que dans ce cas, votre seul moyen est d'utiliser tinyInt1isBit=false dans la chaîne de connexion à la source de données MySQL comme ceci :

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

Au fait, vous pouvez maintenant utiliser l'attribut length comme ceci :

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