J'utilise le planification inverse de ma classe et obtenez ceci:
CREATE TABLE `bytecode`.`user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `email` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, `type` bit(1) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `email` (`email`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
4 Réponses :
Devez-vous l'avoir comme un type code> type code> MySQL? La solution la plus simple consisterait à modifier le type de données dans MySQL vers Tinyint (1) code>.
Sinon, vous devriez pouvoir mapper votre type d'entité à un entier utilisant des annotations; Strike> Pas sûr de cela, devez le rechercher P> ...
@Column(nullable=false)
@Type(type="org.hibernate.type.BooleanType")
private short type;
Je voudrais changer cela dans le MySQL, mais dans pas le DBA, je pense que je pense que je change mieux dans Hibernate puis demander à changer de base de données. Je vais essayer votre approche.
hibernate a un type spécial Voir aussi: strong> p> numeric_boolcan code> pour ce type de cartographie. Vous pouvez le configurer comme suit:
http://bugs.mysql.com/bug.php?id=28422 < / a> suggère qu'il s'agit d'un bug. http://www.xaprb.com/blog/ 2006/04/11 / bit-valeurs-in-mysql / suggère qu'il serait sage de le sauter. Mais bien sûr, vous ne pouvez pas dire à la DBA de ne pas utiliser une colonne de bit dans MySQL - ce qui signifie que nous devons utiliser et une version plus ancienne de MySQL (<5.0.3) ou n'utilisez pas le tout + hibernate de MySQL. P>
J'ai eu un problème similaire. La cartographie suivante en Java a résolu mon problème:
@Column(name = "columnName", columnDefinition="BIT") private Boolean columnVariable;
Boolean ... une enveloppe dangereuse: définie comme null si elle n'est pas initialisée. Avait beaucoup de problèmes avec un code mal testé qui jetait une exception dans l'environnement de production.