Archives du tag : Hibernate

Un nommage à Hibernate

Hibernate

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.