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

JPA Java Discussion :

Unable to build EntityManagerFactory


Sujet :

JPA Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 19
    Points : 20
    Points
    20
    Par défaut Unable to build EntityManagerFactory
    Bonjour,

    Je debute sur les JPA et je pense avoir un probleme simple sur lequel je bloque pourtant depuis trop longtemps. Mon probleme se situe au lancement simple d'une classe de base pour tester la persistence.

    J'ai une base hsql qui tourne correctement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    /usr/local/jboss-6.0.0.Final$ java -cp common/lib/hsqldb.jar org.hsqldb.Server
    [Server@1975b59]: [Thread[main,5,main]]: checkRunning(false) entered
    [Server@1975b59]: [Thread[main,5,main]]: checkRunning(false) exited
    [Server@1975b59]: Startup sequence initiated from main() method
    [Server@1975b59]: Loaded properties from [/usr/local/jboss-6.0.0.Final/server.properties]
    [Server@1975b59]: Initiating startup sequence...
    [Server@1975b59]: Server socket opened successfully in 7 ms.
    [Server@1975b59]: Database [index=0, id=0, db=file:./jpatest, alias=jpatest] opened sucessfully in 251 ms.
    [Server@1975b59]: Startup sequence completed in 261 ms.
    [Server@1975b59]: 2011-03-02 13:02:58.730 HSQLDB server 1.8.0 is online
    Voici aussi mon persistence.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    version="1.0">
    <persistence-unit name="sample" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <properties>
    <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
    <property name="hibernate.hbm2ddl.auto" value="create"/>
    <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
    <property name="hibernate.connection.username" value="sa"/>
    <property name="hibernate.connection.password" value=""/>
    <property name="hibernate.connection.url" value="jdbc:hsqldb:hsql://localhost/jpatest"/>
    <property name="hibernate.show_sql" value="true" /> 
    </properties>
    </persistence-unit>
    </persistence>
    Lorsque j'apporte une modification au persistence.xml, j'ai une erreur de plus, je presume donc que la connexion a la bd s'opere correctement.

    Pourtant j'obtiens toujours la meme erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    javax.persistence.PersistenceException: [PersistenceUnit: sample] Unable to build EntityManagerFactory
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677)
    (...)
    Caused by: org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]
    at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:110)
    Peut-etre que cette erreur vient de mon code Adresse.java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    @Entity
    @Table(name="ADDRESS")
    public class Adresse implements Serializable {
     
    @Id @GeneratedValue(strategy=GenerationType.SEQUENCE) @Column(name = "ID") 
    private long idAdresse;
     
    @Column(name = "TELEPHONENUMBER", length=20)
    private String telephone;
     
    @Column(name = "STREETNUMBER", length=10)
    private String numeroVoie;
     
    @Column(name = "STREETNAME", length=38)
    private String nomVoie;
     
    @Column(name = "ADDRESSLINE5", length=38)
    private String mentionSpecial;
     
    @Column(name = "ZIP", length=10)
    private String codePostal;
     
    @Column(name = "CITY", length=38)
    private String commune;
     
    @Column(name = "COUNTRY", nullable = false, length=38)
    private String pays;
     
    public Adresse() {
    super();
    }
     
    public String getTelephone() {
    return telephone;
    }
     
    public void setTelephone(String telephone) {
    this.telephone = telephone;
    }
     
    public String getNumeroVoie() {
    return numeroVoie;
    }
     
    public void setNumeroVoie(String numeroVoie) {
    this.numeroVoie = numeroVoie;
    }
     
    public String getNomVoie() {
    return nomVoie;
    }
     
    public void setNomVoie(String nomVoie) {
    this.nomVoie = nomVoie;
    }
     
    public String getMentionSpecial() {
    return mentionSpecial;
    }
     
    public void setMentionSpecial(String mentionSpecial) {
    this.mentionSpecial = mentionSpecial;
    }
     
    public String getCodePostal() {
    return codePostal;
    }
     
    public void setCodePostal(String codePostal) {
    this.codePostal = codePostal;
    }
     
    public String getCommune() {
    return commune;
    }
     
    public void setCommune(String commune) {
    this.commune = commune;
    }
     
    public String getPays() {
    return pays;
    }
     
    public void setPays(String pays) {
    this.pays = pays;
    }
     
    public long getIdAdresse() {
    return idAdresse;
    }
     
    }
    TestAdresse.java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    public class TestAdresse {
     
    private static EntityManager em;
    private static EntityManagerFactory emf;
     
    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
     
    emf = Persistence.createEntityManagerFactory("sample");
    em = emf.createEntityManager();
     
    }
     
    @AfterClass
    public static void tearDownAfterClass() throws Exception {
     
    em.close();
    emf.close();
     
    }
     
    @Test(timeout=1000)
    public void testMinimumAdresse() {
     
    EntityTransaction tx = em.getTransaction();
    tx.begin();
    Adresse monAdresse=new Adresse();
    monAdresse.setPays("FRANCE");
    em.persist(monAdresse);
    tx.commit();
    long monId = monAdresse.getIdAdresse();
    assertNotNull("Id not null", monId);
    Adresse monAdresseRetrouve = em.find(Adresse.class, monId);
    assertNotNull("Adresse from database", monAdresseRetrouve);
    assertEquals("getPays", "FRANCE", monAdresseRetrouve.getPays());
    assertNull("Code Postal Null", monAdresseRetrouve.getCodePostal());
    assertNull("Commune Null", monAdresseRetrouve.getCommune());
    assertNull("MentionSpecial Null", monAdresseRetrouve.getMentionSpecial());
     
    }
     
    }
    qui sont pourtant les codes d'un tuto que je suis scrupuleusement...

    Je n'ai plus d'idee pour debugger/debloquer cette erreur, j'espere que vous pourrez me guider.

    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    vérifiez que tous les champs ont bien leurs getters et setters…
    un rapide coup d'œil montre qu'il manque au moins le setter de idAdresse…

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 19
    Points : 20
    Points
    20
    Par défaut Enfin trouve l'erreur
    ??? Un Id, cle primaire, le but c'est de le generer automatiquement.

    Merci mais c'etait dans TestAdresse que c'etait tellement le bordel que j'arrivais pas a voir d'ou venait le bug.

    Finalement j'ai pu resoudre l'erreur en vidant completement mon pom.xml, ce qui s'est passe est que EntityManagerFactory avait deux versions dans ma librairie et l'une des deux marchait pas...

    Bref, au cas ou ca puisse un jour servir a quelqu'un, voici les librairies (avec numeros exacts de versions) importees dans mon projet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    [INFO] jpa_autoformation:jpa_autoformation:jar:0.1
    [INFO] +- junit:junit:jar:4.8.2:compile
    [INFO] +- net.java.dev.appframework:appframework:jar:1.03:compile
    [INFO] |  \- org.swinglabs:swing-worker:jar:1.1:compile
    [INFO] +- org.hibernate:hibernate-entitymanager:jar:3.4.0.GA:compile
    [INFO] |  +- org.hibernate:ejb3-persistence:jar:1.0.2.GA:compile
    [INFO] |  +- org.hibernate:hibernate-commons-annotations:jar:3.1.0.GA:compile
    [INFO] |  +- org.hibernate:hibernate-annotations:jar:3.4.0.GA:compile
    [INFO] |  +- org.hibernate:hibernate-core:jar:3.3.0.SP1:compile
    [INFO] |  |  +- antlr:antlr:jar:2.7.6:compile
    [INFO] |  |  \- commons-collections:commons-collections:jar:3.1:compile
    [INFO] |  +- org.slf4j:slf4j-api:jar:1.4.2:compile
    [INFO] |  +- dom4j:dom4j:jar:1.6.1:compile
    [INFO] |  |  \- xml-apis:xml-apis:jar:1.0.b2:compile
    [INFO] |  +- javax.transaction:jta:jar:1.1:compile
    [INFO] |  \- javassist:javassist:jar:3.4.GA:compile
    [INFO] \- org.slf4j:slf4j-log4j12:jar:1.5.2:compile
    [INFO]    \- log4j:log4j:jar:1.2.14:compile

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par zg2pro Voir le message
    ??? Un Id, cle primaire, le but c'est de le generer automatiquement.
    On ne génère pas de nouvelles clés primaires pour les enregistrements existants…
    quand l'ORM relit une entité existante du repository, la clé primaire existe déjà et il faut donc bien l'assigner.
    (À moins que vous n'ayez pas l'intention de relire un jour les données que vous sauvegardez…)

    L'exception "Unable to instantiate default tuplizer" peut être causée par des erreurs de getter/setter,
    des problèmes avec la version de cglib, javassist, …
    elle assez générique et la vraie cause est donnée par la ligne suivante du crash log… celle que vous n'avez pas montré.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Slt, jx savoir exactement ce que t'as fait?? moi j'ai téléchargé les librairies asm et cglib mais j'ai le mm pb.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 06/03/2013, 14h11
  2. Unable to build EntityManagerFactory
    Par DevServlet dans le forum JPA
    Réponses: 7
    Dernier message: 05/06/2012, 17h33
  3. Unable to configure EntityManagerFactory
    Par hitchie dans le forum JPA
    Réponses: 5
    Dernier message: 01/05/2012, 18h31
  4. [Data] Unable to build EntityManagerFactory
    Par DevServlet dans le forum Spring
    Réponses: 1
    Dernier message: 12/05/2010, 15h04
  5. Unable to build EntityManagerFactory
    Par elmander dans le forum Persistance des données
    Réponses: 2
    Dernier message: 25/02/2010, 22h42

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