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 :

Erreur 'unknown entity'


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Erreur 'unknown entity'
    Bonjour

    Voilà, j'ai mon projet Java lancé dans Eclipse. j'ai téléchargé hibernate 5.3
    J'ai suivi ce tuto : http://www.simplecodestuffs.com/hibe...ng-annotation/
    il demande d'utiliser hibernate 4.2

    Voici mon arbo dans eclipse :
    Nom : arbo.jpg
Affichages : 2385
Taille : 58,4 Ko

    Voici hibernate.cfg.xml qui configure hibernate

    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
    <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
     
    <hibernate-configuration>
     
    <session-factory>
            <!-- Database connection settings -->
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="hibernate.connection.username">root</property>
            <property name="hibernate.connection.password">root</property>
            <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
     
     
          	<property name="hibernate.hbm2ddl.auto">create</property>
     
            <!-- Echo all executed SQL to sysout -->
            <property name="show_sql">true</property>
     
     
            <!-- Map Entity Class -->
            <mapping resource="entity.Se.hbm.xml"/>
        	<mapping class="entity.StudentEntity"></mapping>
     
     
    </session-factory>
    </hibernate-configuration>
    Voici HibernateUtil.java qui doit enregistrer un objet en bdd

    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
    package util;
     
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.service.ServiceRegistry;
     
    import entity.StudentEntity;
     
     
    public class HibernateUtil {
     
            public static void main(String[] args) {
     
            Configuration cf = new Configuration().configure("hibernate.cfg.xml");
     
            StandardServiceRegistryBuilder srb = new StandardServiceRegistryBuilder();
            srb.applySettings(cf.getProperties());
            ServiceRegistry sr = srb.build();
            SessionFactory sf = cf.buildSessionFactory(sr);
     
            Session session = sf.openSession();
     
            StudentEntity std = new StudentEntity();
                    std.setId(24); // Primary Key
                    std.setName("Jamil");
                    std.setDepartment("ECE");
                    std.setCollege("SKCET");
     
                    Transaction tx = session.beginTransaction();
                    session.save(std);
                    tx.commit();
                    System.out.println("Object saved successfully.....!!");
                    session.close();
                    sf.close();
            }
    }

    Voici la classe StudentEntity.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
    package entity;
     
    import javax.persistence.*;
     
     
    @Entity
    @Table(name = "STUDENT")
    public class StudentEntity {
     
            @Id
            @Column(name = "ID")
            private int id;
     
            @Column(name = "NAME")
            private String name;
     
            @Column(name = "DEPARTMENT")
            private String department;
     
            @Column(name = "COLLEGE")
            private String college;
     
     
    // Create Getters and Setters
     
            public int getId() {
                return id;
            }
            public void setId(Integer id) {
                this.id = id;
            }  
     
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }  
     
            public String getDepartment() {
                return department;
            }
            public void setDepartment(String department) {
                this.department = department;
            }  
     
            public String getCollege() {
                return college;
            }
            public void setCollege(String college) {
                this.college = college;
            }  
     
    }

    Suite à un "run as java", j'ai l'erreur suivante Unknown entity: entity.StudentEntity alors que la classe existe. :

    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
    août 02, 2016 6:03:05 PM org.hibernate.Version logVersion
    INFO: HHH000412: Hibernate Core {5.2.1.Final}
    août 02, 2016 6:03:05 PM org.hibernate.cfg.Environment <clinit>
    INFO: HHH000206: hibernate.properties not found
    août 02, 2016 6:03:05 PM org.hibernate.cfg.Environment buildBytecodeProvider
    INFO: HHH000021: Bytecode provider name : javassist
    août 02, 2016 6:03:05 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
    INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
    août 02, 2016 6:03:05 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
    WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
    août 02, 2016 6:03:05 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
    INFO: HHH10001005: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/test]
    août 02, 2016 6:03:05 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
    INFO: HHH10001001: Connection properties: {user=root, password=****}
    août 02, 2016 6:03:05 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
    INFO: HHH10001003: Autocommit mode: false
    août 02, 2016 6:03:05 PM org.hibernate.engine.jdbc.connections.internal.PooledConnections <init>
    INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
    Tue Aug 02 18:03:05 CEST 2016 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
    août 02, 2016 6:03:05 PM org.hibernate.dialect.Dialect <init>
    INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect
    août 02, 2016 6:03:06 PM org.hibernate.tool.schema.internal.SchemaCreatorImpl applyImportSources
    INFO: HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@8f106e'
    Exception in thread "main" org.hibernate.MappingException: Unknown entity: entity.StudentEntity
    	at org.hibernate.metamodel.internal.MetamodelImpl.entityPersister(MetamodelImpl.java:620)
    	at org.hibernate.internal.SessionImpl.getEntityPersister(SessionImpl.java:1596)
    	at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:104)
    	at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:192)
    	at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:38)
    	at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:177)
    	at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:32)
    	at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:73)
    	at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:668)
    	at org.hibernate.internal.SessionImpl.save(SessionImpl.java:660)
    	at org.hibernate.internal.SessionImpl.save(SessionImpl.java:655)
    	at util.HibernateUtil.main(HibernateUtil.java:33)

    Du coup j'ai essayé de créer Se.hbm.xml dans le pacquage entity(Mais dans le tuto il a l'air de dire que ce n'est pas nécessaire. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0"?><!DOCTYPE hibernate-mapping
      PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
      "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"><hibernate-mapping>
      <class name="entity.StudentEntity" table="STUDENT">
        <id name="id" type="int" column="id">
          <generator class="native"/>
        </id>
        <property name="name" type="string" not-null="true" />
        <property name="departement" type="string" not-null="true" />
        <property name="college" type="date" />
      </class>
    </hibernate-mapping>
    Résultat : J'ai toujours la même erreur !

    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
    août 02, 2016 6:03:05 PM org.hibernate.Version logVersion
    INFO: HHH000412: Hibernate Core {5.2.1.Final}
    août 02, 2016 6:03:05 PM org.hibernate.cfg.Environment <clinit>
    INFO: HHH000206: hibernate.properties not found
    août 02, 2016 6:03:05 PM org.hibernate.cfg.Environment buildBytecodeProvider
    INFO: HHH000021: Bytecode provider name : javassist
    août 02, 2016 6:03:05 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
    INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
    août 02, 2016 6:03:05 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
    WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
    août 02, 2016 6:03:05 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
    INFO: HHH10001005: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/test]
    août 02, 2016 6:03:05 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
    INFO: HHH10001001: Connection properties: {user=root, password=****}
    août 02, 2016 6:03:05 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
    INFO: HHH10001003: Autocommit mode: false
    août 02, 2016 6:03:05 PM org.hibernate.engine.jdbc.connections.internal.PooledConnections <init>
    INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
    Tue Aug 02 18:03:05 CEST 2016 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
    août 02, 2016 6:03:05 PM org.hibernate.dialect.Dialect <init>
    INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect
    août 02, 2016 6:03:06 PM org.hibernate.tool.schema.internal.SchemaCreatorImpl applyImportSources
    INFO: HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@8f106e'
    Exception in thread "main" org.hibernate.MappingException: Unknown entity: entity.StudentEntity
    	at org.hibernate.metamodel.internal.MetamodelImpl.entityPersister(MetamodelImpl.java:620)
    	at org.hibernate.internal.SessionImpl.getEntityPersister(SessionImpl.java:1596)
    	at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:104)
    	at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:192)
    	at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:38)
    	at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:177)
    	at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:32)
    	at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:73)
    	at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:668)
    	at org.hibernate.internal.SessionImpl.save(SessionImpl.java:660)
    	at org.hibernate.internal.SessionImpl.save(SessionImpl.java:655)
    	at util.HibernateUtil.main(HibernateUtil.java:33)

    J'ai essayé pleins de truc du style changer @Entity par l'url, et rien à faire cela ne marche pas, pourtant tout est logique.
    Images attachées Images attachées  

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Vire cette ligne de hibernate.cfg.xml puisque tu utilises déjà l'annotation et le fichier Se.hbm.xml est inutile.
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
     <mapping resource="entity.Se.hbm.xml"/>
    Ou tu vires les annotations de la classe StudentEntity et ce sera cette ligne que tu vires
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
     <mapping class="entity.StudentEntity"></mapping>
    A+.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonjour,

    Vire cette ligne de hibernate.cfg.xml puisque tu utilises déjà l'annotation et le fichier Se.hbm.xml est inutile.


    Ou tu vires les annotations de la classe StudentEntity et ce sera cette ligne que tu vires


    A+.
    Merci infiniment, si je comprends bien, désormais, les fichiers HBM sont devenus inutiles avec hibernate ?

    les fichiers de mapping sont ils obligatoires ou pas?

    EDIT : Wah truc de fou, en fait il fallait utiliser la version 4.3 de Hibernate(Comme il le précisait) ! J'hallucine, la version 4.2 et la version 5.3 ne sont pas compatibles avec son code ! Quand même ils pourrait conserver une rétro comptabilité quoi ! Donc du coup, cela marche ! Son tuto est excellent de chez excellent, le jeune homme, en en fait, tous ses tutos sont excellents(mais en anglais)!

    Merci beaucoup, sauf que je me demande comment je vais faire tourner son code(et mes codes persos) avec la dernière version !

    A par ça je pose quand même ma question : Donc il semble que les fichiers de mapping(*.HBM) ne soient plus obligatoires, est ce vrai ? Merci c'est trop sympa !

    ca marche :
    Nom : bla.jpg
Affichages : 2359
Taille : 107,3 Ko


    Auriez vous une idée de la raison pour laquelle ce code ne marche pas avec la dernière version de HIbernate ??


    EDIT 2 :
    Bah ok, j'ai compris, apparemment le problème est connu :

    http://stackoverflow.com/questions/3...unknown-entity

    Merci !

    je pose quand même la question :

    : Donc il semble que les fichiers de mapping(*.HBM) ne soient plus obligatoires, est ce vrai ? Merci c'est trop sympa !
    Dernière modification par Invité ; 04/08/2016 à 00h00.

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Citation Envoyé par devwebsympa Voir le message
    Merci infiniment, si je comprends bien, désormais, les fichiers HBM sont devenus inutiles avec hibernate ?

    les fichiers de mapping sont ils obligatoires ou pas?
    Soit tu utilises les fichiers mapping (*.hbm.xml), soit les annotations pour déclarer les entités.

  5. #5
    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
    Et tant qu'on est dans les précisions, tu peux aussi utiliser Hibernate comme implémentation de JPA
    Comme JPA est l'API JEE de référence, le même code pourra tourner avec TopLink, EclipseLink, Hibernate, etc...
    Avec de l'Hibernate natif, tu as accès à des choses supplémentaires mais réservées à Hibernate... c'est un choix...

    Je te suggère d'installer les plugins d'Eclipse "JBoss Tools". Dans le tas, tu as un outil qui te permet de générer pas mal de chose (entre autre les entities) directement à partir du modèle physique (la base de données), ça peut être utile...
    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. Erreur "Unknown entity"
    Par daydream123 dans le forum Spring
    Réponses: 2
    Dernier message: 05/11/2011, 11h39
  2. [Hibernate 3.2.1] Erreur "Unknown entity"
    Par seddik_saber dans le forum Hibernate
    Réponses: 2
    Dernier message: 11/09/2011, 17h33
  3. [Mapping] Erreur "Unknown entity"
    Par Fatemy dans le forum Hibernate
    Réponses: 1
    Dernier message: 19/08/2011, 10h28
  4. L'erreur org.hibernate.MappingException: Unknown entity
    Par proganas dans le forum Hibernate
    Réponses: 1
    Dernier message: 22/07/2010, 18h20
  5. [Eclipse / Jonas] Erreur "jonas-entity missing for bean"
    Par citygirl dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 16/05/2005, 11h59

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