IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Hibernate Eclipse HSQLDB


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 8
    Par défaut Hibernate Eclipse HSQLDB
    Salut à tous,
    Je viens juste de tester mon premier exemple avec Hibernate,
    j'utilise la plate forme suivante:
    Eclipse 3.1, Hibernate version 2.0 et HSQLDB comme SGBD,
    en compilant le programme, j'ai le message d'erreur suivant:
    ----------------------------------------------------------------
    Exception in thread "main" java.lang.ExceptionInInitializerError
    at Test.main(Test.java:7)
    Caused by: java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at net.sf.hibernate.util.PropertiesHelper.getInt(PropertiesHelper.java:18)
    at net.sf.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:40)
    at net.sf.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:83)
    at net.sf.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:153)
    at net.sf.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:627)
    at com.test.HibernateUtil.<clinit>(HibernateUtil.java:11)
    ... 1 more
    -----------------------------------
    sachant que le fichier de mapping et comme suit:
    ----------------------------------------------------
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping
    PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
    <hibernate-mapping>
    <class name="com.test.TContact" table="t_contact">
    <id name="Id" type="integer">
    <column name="id" sql-type="integer"/>
    <generator class="increment" />
    </id>
    <property name="Nom" type="string">
    <column name="nom" sql-type="char(20)" not-null="true"/>
    </property>
    <property name="Prenom" type="string">
    <column name="prenom" sql-type="char(20)" not-null="true"/>
    </property>
    </class>
    </hibernate-mapping>
    ----------------------------------------------------
    quelqu'un à une idée comme résoudre cet erreur,
    merci

  2. #2
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Il semblerait que tu ais un pb de conversion entre Hibernate et ta bdd ou encore entre ton mapping et ton bean TContact.

    Montre voir le code de TContact, la structure de ta table et l instruction hibernate que tu essaye de de faire.(en utilsant la balise code, c est plus lisible)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 8
    Par défaut
    Merci,
    je pense aussi qu'il y a un pb de mapping mais j'arrive pas à l'identifier,
    voici le code de ma bean TContact et mon classe test qui stocke les donnée:
    -----
    TContact:
    ---------
    package com.test;
    public class TContact {
    public TContact() {

    }
    private int Id;
    private String Nom;
    private String Prenom;

    public int getId() {
    return Id;
    }
    public void setId(int Id) {
    this.Id = Id;
    }
    public String getNom() {
    return Nom;
    }
    public void setNom(String Nom) {
    this.Nom = Nom;
    }
    public String getPrenom() {
    return Prenom;
    }
    public void setPrenom(String Prenom) {
    this.Prenom = Prenom;
    }

    }
    -------
    Classe Test
    -----------
    import net.sf.hibernate.*;
    import com.test.*;
    public class Test {
    public static void main(String[] args)
    throws HibernateException {
    Session session = HibernateUtil.currentSession();
    Transaction tx = session.beginTransaction();
    TContact contact = new TContact();
    contact.setNom("Dupont");
    contact.setPrenom("Jean");
    session.save(contact);
    contact = new TContact();
    contact.setNom("Lambert");
    contact.setPrenom("Julie");
    session.save(contact);
    tx.commit();
    HibernateUtil.closeSession();
    }

    }
    ----------
    ma table t_contact contient les tuple suivant:
    id int,
    nom char(20),
    prenom char(20)
    -------------------------------

  4. #4
    Membre expérimenté Avatar de xv-mnt
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 142
    Par défaut
    Essaie de remplace le type primitif int par la classe Integer qui permet de gérer la valeur null.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 8
    Par défaut
    Merci,
    j'ai changer le type int par Integer, le message d'erreur change:
    ---------------------
    Exception in thread "main" java.lang.ExceptionInInitializerError
    at Test.main(Test.java:7)
    Caused by: java.lang.RuntimeException: Problème de configuration : duplicate import: TContact
    at com.test.HibernateUtil.<clinit>(HibernateUtil.java:13)
    ... 1 more
    Caused by: net.sf.hibernate.MappingException: duplicate import: TContact
    at net.sf.hibernate.cfg.Mappings.addImport(Mappings.java:60)
    at net.sf.hibernate.cfg.Binder.bindClass(Binder.java:108)
    at net.sf.hibernate.cfg.Binder.bindRootClass(Binder.java:165)
    at net.sf.hibernate.cfg.Binder.bindRoot(Binder.java:1095)
    at net.sf.hibernate.cfg.Configuration.add(Configuration.java:230)
    at net.sf.hibernate.cfg.Configuration.addInputStream(Configuration.java:252)
    at net.sf.hibernate.cfg.Configuration.addResource(Configuration.java:273)
    at net.sf.hibernate.cfg.Configuration.configure(Configuration.java:841)
    at net.sf.hibernate.cfg.Configuration.configure(Configuration.java:792)
    at net.sf.hibernate.cfg.Configuration.configure(Configuration.java:732)
    at net.sf.hibernate.cfg.Configuration.configure(Configuration.java:719)
    at com.test.HibernateUtil.<clinit>(HibernateUtil.java:11)
    ... 1 more

    --------------------
    sachant que le message Problème de configuration c'est un message personnel dans le catch de mon classe HubernateUtil:
    ------------------------------
    package com.test;
    import net.sf.hibernate.*;
    import net.sf.hibernate.cfg.*;

    public class HibernateUtil {
    private static final SessionFactory sessionFactory;
    static {
    try {
    // Crée la SessionFactory à partir de hibernate.cfg.xml
    sessionFactory =
    new Configuration().configure().buildSessionFactory();
    } catch (HibernateException ex) {
    throw new RuntimeException("Problème de configuration : "
    + ex.getMessage(), ex);
    }}
    public static final ThreadLocal session = new ThreadLocal();
    public static Session currentSession()
    throws HibernateException {
    Session s = (Session) session.get();
    // Ouvre une nouvelle Session, si ce Thread n'en a aucune
    if (s == null) {
    s = sessionFactory.openSession();
    session.set(s);
    }
    return s;
    }
    public static void closeSession()
    throws HibernateException {
    Session s = (Session) session.get();
    session.set(null);
    if (s != null)
    s.close();
    }
    }
    ---------------------------------------
    j'espère pas que c'est un pb de Hibernate avec ma BdD sachant que mon fichier de configuration est
    ------------------------------
    <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration
    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
    <hibernate-configuration>
    <session-factory>
    <!-- local connection properties -->
    <property name="connection.url">
    jdbc:hsqldb:file:C:/base/test;shutdown=true
    </property>
    <property name="hibernate.connection.username">sa</property>
    <property name="hibernate.connection.password"></property>
    <property name="hibernate.connection.driver_class">
    org.hsqldb.jdbcDriver
    </property>
    <property name="hibernate.connection.pool_size"></property>
    <property name="dialect">net.sf.hibernate.dialect.HSQLDialect</property>
    <property name="hibernate.show_sql">false</property>
    <property name="hibernate.transaction.factory_class">
    net.sf.hibernate.transaction.JDBCTransactionFactory
    </property>
    <mapping resource="tcontact.hbm.xml"/>
    </session-factory>
    </hibernate-configuration>

    -------------
    qu'est ce que tu pense !!

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Ton problème vient de là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <id name="Id" type="integer">         <----- devrait être type="int"
    <column name="id" sql-type="integer"/>
    <generator class="increment" />
    </id>
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. hibernate & eclipse(Hibernate Mapping File)
    Par coquero dans le forum Hibernate
    Réponses: 5
    Dernier message: 06/07/2006, 11h48
  2. [Hibernate & Eclipse] problème mapping
    Par sonia_ppr dans le forum Hibernate
    Réponses: 4
    Dernier message: 04/05/2006, 14h32
  3. [Tomcat]Hibernate eclipse et TOMCAT
    Par Pck dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 25/10/2005, 09h32
  4. [Hibernate] [Eclipse] Création du fichier de mapping
    Par Willy7901 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 11/08/2005, 17h54
  5. [Plugin][Hibernate]Eclipse avec hibernate(synchronizer)
    Par mg67 dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 23/06/2005, 17h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo