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.


3 commentaires

  1. Publié le 14 avril 2009 à 16:05 | Permalien

    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 ! =)

  2. Publié le 14 avril 2009 à 16:07 | Permalien

    * Le code n’est pas passé dans le précédent message, le voici (avec des espaces) :

  3. Publié le 14 avril 2009 à 16:08 | Permalien

    * 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

Ecrire un commentaire

Votre courriel ne sera jamais publié ou partagé. Les champ obligatoires sont marqués *

*
*