Je remonte un problème qui m’a paru personnellement assez fourbe. Il concerne un bug (ou pas?) lors de la création d’une base de données alimenté par un fichier de conf Hibernate. Bien entendu, je fournis la solution…
On obtient la sortie d’erreurs suivante (il ne veut rien savoir, la table “USER” ne lui plaît pas):
24 mars 2009 22:54:45 org.hibernate.tool.hbm2ddl.SchemaExport create
GRAVE: Unsuccessful: create table USER (UID integer not null, LOGIN varchar(12) not null unique, PASSWORD varchar(12) not null, EMAIL varchar(255) not null, REGISTRATION-DATE timestamp not null, STATUS integer not null, primary key (UID))
24 mars 2009 22:54:45 org.hibernate.tool.hbm2ddl.SchemaExport create
GRAVE: Erreur de syntaxe : Encountered “USER” at line 1, column 14
Avec comme configuration :
<class name="core.User" table="USER"> <id name="uid" column="UID"> <generator class="increment"/> </id> <property name="login" column="LOGIN" not-null="true" unique="true" length="12"/> <property name="password" column="PASSWORD" not-null="true" length="12"/> <property name="email" column="EMAIL" not-null="true" /> <property name="registrationDate" column="REGISTRATION-DATE" not-null="true" type="timestamp"/> <property name="status" column="STATUS" not-null="true" type="integer"/> </class>
Problème bête (une histoire de nommage…):
Le problème vient de la définition de l’attribut “column”. Hibernate ne supporte pas les majuscules en nom de colonne. C’est valable également pour les tables.
Solutions (si j’avais su…):
- écrire les tables en minuscule,
- rajouter des back-quotes –> ` <– (comme ceci: column=”`LOGIN`”)
En espérant vous avoir aidé !
Romain LAFOND.


3 commentaires
Petite remarque :
Au lieu de mettre en minuscule ou de mettre les ` pour que ca fonctionne, je pense que c’est mieux de faire un truc du genre :
A tester et à confirmer ! =)
* Le code n’est pas passé dans le précédent message, le voici (avec des espaces) :
* Le code n’est pas passé dans le précédent message, le voici (avec des espaces) :
property name=”login” column=”login” not-null=”true” unique=”true” length=”12″
deviendrait :
property name=”login”
column name=”LOGIN” not-null=”true” unique=”true” length=”12″
property