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 :

[Tuto Serge Tahé] Hibernate + Spring : Unknown entity


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Par défaut [Tuto Serge Tahé] Hibernate + Spring : Unknown entity
    Bonjour,

    Je me suis lancé dans les cours de Serge Tahé et suis actuellement sur son Introduction à java EE.

    J'ai du mettre en place 3 entités (Employé, Cotisation et Indemnité) et donc implémenter la couche JPA/Hibernate. Jusque la tout va bien j'ai pu tester la création de ma Bdd, tout fonctionne.

    Le problème est apparu après l'ajout de la couche DAO. J'ai mis en place les 3 fichiers de classes de mes 3 entités ainsi que l'implémentation de leurs interfaces (CotisationDao ICotisationDao ...).

    J'ai mis a jour ensuite mon fichier peristence.xml et j'ai créer le fichier de configuration de Spring qui sont les suivants :

    persistence.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="1.0"
    xmlns="http://java.sun.com/xml/ns/persistence"
    xmlnssi="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">
    <persistence-unit name="jpa" transaction-type="RESOURCE_LOCAL">
    <!-- provider -->
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <properties>
    <!-- Classes persistantes -->
    <property name="hibernate.archive.autodetection" value="class, hbm" />
    </properties>

    </persistence-unit>
    </persistence>
    spring-config-dao.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans" xmlnssi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schem...-beans-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">

    <!-- couches applicatives -->
    <bean id="employeDao" class="dao.EmployeDao" />
    <bean id="indemniteDao" class="dao.IndemniteDao" />
    <bean id="cotisationDao" class="dao.CotisationDao" />

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="persistenceUnitName" value="jpa"/>
    <property name="jpaVendorAdapter">
    <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <!--
    <property name="showSql" value="true" />
    -->
    <property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
    <property name="generateDdl" value="true" />
    </bean>
    </property>
    <property name="loadTimeWeaver">
    <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
    </property>
    </bean>

    <!-- la source de donnéees DBCP -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/dbpam_hibernate" />
    <property name="username" value="dbpam" />
    <property name="password" value="dbpam" />

    </bean>

    <!-- le gestionnaire de transactions -->
    <tx:annotation-driven transaction-manager="txManager" />
    <bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>

    <!-- traduction des exceptions -->
    <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />

    <!-- persistence -->
    <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

    </beans>
    J'ai ensuite testé l'appel aux classes dao en tentant d'ajouter des entrées a ma Bdd via un programme de test. Mon programme appel une méthode de création d'une cotisation par exemple. Je reçois bien l'appel dans la méthode create de CotisationDao, je test mon EntityManager qui est bien non null mais lors de l'appel du persist l'erreur suivante apparait :

    Testcase: initDB(dao.JUnitInitDB): Caused an ERROR
    Unknown entity: jpa.Cotisation

    java.lang.IllegalArgumentException: Unknown entity: jpa.Cotisation
    at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:215)
    at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:215)
    at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:358)
    at $Proxy8.persist(Unknown Source)
    at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:197)
    at $Proxy8.persist(Unknown Source)
    at dao.CotisationDao.create(CotisationDao.java:28)
    at dao.JUnitInitDB.initDB(JUnitInitDB.java:46)


    Test dao.JUnitInitDB FAILED
    J'ai testé pas mal de choses sans succès et comme je débute dans ce domaine j'ai surement quelque chose qui m'échappe. Des erreurs que j'ai pu rencontrer sur le même type d'erreur sont :

    - l'import d'un mauvais .Entity (Aucun probleme de ce coté la)
    - Le fait qu'Hibernate ne reconnaissent pas mes entity : j'ai bien mes @entity et j'ai activé l'autodetection dans mon peristance.xml
    - essayer de mapper ces classes directement dans le fichier de conf spring, sans succès également

    J'ai aussi testé sur un projet simplifié au maximum avec une seule table pensant que cela aurait pu venir d'une mauvaise mise en place des mes relations entre table. J'ai configuré les fichiers xml de la même façon. J'ai exactement la même erreur ... . Cela me conforte sur le fait que je dois oublier qque chose sur le mapping de mes classes.

    Des idées ?

    Merci pour vos réponses !

  2. #2
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Par défaut
    Bon problème réglé !

    Le fichier de conf de spring ne trouvait pas mon persistance.xml via l'entityManagerFactory.

    J'ai donc rajouté :

    <property name="persistenceXmlLocation" value="META-INF/persistence.xml"/>
    Et il trouve correctement mes entités !

    Champagne.

    Ps : le défaut du persistenceXmlLocation est "classpath:META-INF/persistence.xml", donc ça reste quand même assez étrange.

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

Discussions similaires

  1. [Mapping] org.hibernate.MappingException: Unknown entity: null ?
    Par andlio dans le forum Hibernate
    Réponses: 1
    Dernier message: 02/04/2012, 15h43
  2. [Data] [Tuto Serge Tahé] Problème ClassPathXmlApplicationContext
    Par Oca87 dans le forum Spring
    Réponses: 1
    Dernier message: 15/09/2010, 13h14
  3. L'erreur org.hibernate.MappingException: Unknown entity
    Par proganas dans le forum Hibernate
    Réponses: 1
    Dernier message: 22/07/2010, 18h20
  4. Réponses: 1
    Dernier message: 24/02/2009, 19h18
  5. Réponses: 1
    Dernier message: 01/05/2007, 13h48

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