Carte un tinyint as boolean hibernate
J'ai un type BOOLÉEN dans une table MySQL (TINYINT(1)) et je suis en train de cartographier le champ booléen dans une entité, mais cela génère une exception:
org.hibernate.HibernateException: Wrong column type in maegul.users for column admin. Found: bit, expected: boolean
J'ai changé le champ dans mon entité d'octets et de faire les changements respectifs agit d'un booléen, et j'obtiens:
org.hibernate.HibernateException: Wrong column type in maegul.users for column admin. Found: bit, expected: tinyint
J'ai essayé d'utiliser le @Type
annotation sur le terrain:
@Type(type = "org.hibernate.type.NumericBooleanType")
mais j'obtiens:
org.hibernate.HibernateException: Wrong column type in maegul.users for column admin. Found: bit, expected: integer
- Ce que votre version de MySQL ?
- c'est 5.5.16
- probablement quelques infos utiles ici.
- toute bonne réponse ci-dessous??
- Je pense que c'est une double question qui a été posée ici : stackoverflow.com/questions/3383169/...
Vous devez vous connecter pour publier un commentaire.
De ce que j'ai lu ici :
Il semble Hibernate attend un entier et a obtenu un peu.
Ce qui signifie de votre annotation est maintenant correcte :
Mais peut-être qu'il a mis à jour votre base de données pour définir en tant que Bits au lieu d'un entier, donc l'erreur.
Si vous avez vraiment besoin d'un TinyInt, vous pouvez utiliser
@Type
ET@Column
, pour définir, en tant qu'Entier, de type TinyInt :bit
. J'ai utilisé cette solution mais avecBIT
au lieu deTINYINT
dans lecolumnDefinition
et cela a fonctionné.Mieux utiliser
BIT(1)
au lieu deTINYINT(1)
Vous pouvez le faire à partir d'un Dialecte qui ne nécessiteront pas de fastidieux col au niveau de l'annotation et à tous les lieux:
Ensuite utiliser cette coutume dialecte en tant que postgres dialecte en "veille prolongée.dialecte"
Essayez ceci:
J'ai été en mesure de résoudre ce problème en ajoutant "transformedBitIsBoolean=true" à mon MySQL chaîne de connexion.
Voir cette question: "Trouvés: bit, attendu: boolean" après Hibernate 4 mise à niveau
Et ce post sur le forum: https://hibernate.atlassian.net/browse/HHH-6935
Quel est le problème avec la cartographie comme un int et d'utiliser un accesseur (isAdmin) pour obtenir la valeur booléenne. J'espère que vous êtes obscurcir le type réel de toute façon.
Cartographie comme org.mise en veille prolongée.type.BooleanType pourrait fonctionner.
Voir http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/types.html#types-value-basic.
J'ai couru dans la situation similaire avec hibernate aujourd'hui et a fini par avoir de données mysql type tinyint(1) et a déclaré que hibernate type boolean et il a fait le tour
@Type d'annotation est hibernate annotations
à utiliser avec JPA, on peut utiliser ColumnDefiniton Attribut.