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

Plateformes (Java EE, Jakarta EE, Spring) et Serveurs Discussion :

J'ai cr�� une config Hibernate mais les entity ne sont pas reconnus


Sujet :

Plateformes (Java EE, Jakarta EE, Spring) et Serveurs

  1. #1
    Membre averti
    Homme Profil pro
    D�veloppeur Java
    Inscrit en
    Mai 2017
    Messages
    21
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : D�veloppeur Java
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2017
    Messages : 21
    Par d�faut J'ai cr�� une config Hibernate mais les entity ne sont pas reconnus
    J'ai cette structure :

    /

    └── src

    ├── main

    │ └── java

    │ ├── dao

    │ │ └── RealmDao.java

    │ ├── entity

    │ │ └── Realm.java

    │ ├── util

    │ │ └── HibernateUtil.java

    │ └── main.java

    └── resources

    └── hibernate.cfg.xml

    Voici le code des classes :

    package dao;


    import entity.Realm;
    import jakarta.persistence.criteria.CriteriaBuilder;
    import jakarta.persistence.criteria.CriteriaQuery;
    import jakarta.persistence.criteria.Root;
    import org.hibernate.*;
    import util.HibernateUtil;

    import java.util.List;
    public class RealmDAO {

    public void save(entity.Realm realm) {
    Transaction tx = null;
    try (Session session = HibernateUtil.getSessionFactory().openSession()) {
    tx = session.beginTransaction();
    session.persist(realm);
    tx.commit();
    } catch (Exception e) {
    if (tx != null && tx.isActive()) {
    try {
    tx.rollback();
    } catch (Exception rollbackEx) {
    System.err.println("Rollback failed: " + rollbackEx.getMessage());
    }
    }
    throw e;
    }
    }
    }

    package entity;

    import javax.persistence.*;
    import java.util.Set;

    @Entity
    @Table(name = "realm")
    public class Realm {

    @Id
    private int id;

    private String name;

    @OneToMany(mappedBy = "realm", cascade = CascadeType.
    ALL
    , orphanRemoval = true)
    private Set<Currency> currencies;

    // Getters and setters
    public int getId() { return id; }
    public void setId(int id) { this.id = id; }

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }

    public Set<Currency> getCurrencies() { return currencies; }
    public void setCurrencies(Set<Currency> currencies) { this.currencies = currencies; }
    }

    package util;


    import entity.Currency;
    import entity.Item;
    import entity.Realm;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;

    public class HibernateUtil {

    private static final SessionFactory
    sessionFactory
    =
    buildSessionFactory
    ();

    private static SessionFactory buildSessionFactory() {
    try {
    return new Configuration()
    .configure("hibernate.cfg.xml")
    .addAnnotatedClass(Realm.class)
    .buildSessionFactory();
    } catch (Throwable ex) {
    System.
    err
    .println("Initial SessionFactory creation failed: " + ex);
    throw new ExceptionInInitializerError(ex);
    }
    }

    public static SessionFactory getSessionFactory() {
    return
    sessionFactory
    ;
    }

    public static void shutdown() {

    getSessionFactory
    ().close();
    }
    }




    public Class Main {
    public static void main(String[] args) {
    System.
    out
    .println("Realm.class is entity? " + HibernateUtil.
    getSessionFactory
    ().getMetamodel().entity(Realm.class));
    }
    }



    hibernate.cfg.xml
    <!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
    <session-factory>
    <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/database</property>
    <property name="hibernate.connection.username">user</property>
    <property name="hibernate.connection.password">password</property>
    <property name="hibernate.hbm2ddl.auto">update</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.format_sql">true</property>
    <mapping class="entity.Realm"/>
    </session-factory>
    </hibernate-configuration>

    Il n'y a pas d'erreur dans le projet.
    Quand je lance la class main j'ai cette erreur

    Exception in thread "main" java.lang.IllegalArgumentException: Not an entity: entity.Realm

    at org.hibernate.metamodel.model.domain.internal.JpaMetamodelImpl.entity(JpaMetamodelImpl.java:204)

    at org.hibernate.metamodel.model.domain.internal.MappingMetamodelImpl.entity(MappingMetamodelImpl.java:463)

    at org.hibernate.metamodel.model.domain.internal.MappingMetamodelImpl.entity(MappingMetamodelImpl.java:98)

    Je ne sais pas quoi faire.

    Quelqu'un peut m'aider ?

    Merci.

  2. #2
    Membre tr�s actif

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    486
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 486
    Billets dans le blog
    5
    Par d�faut
    Je le fais par Spring, donc je ne suis pas forcement comp�tent pour r�pondre.

    Mais je pense que tu as oubli� de d�finir le package o� il faut scanner pour trouver l'ensemble des classes entit�s.

    Dans mon projet, par exemple:
    https://bitbucket.org/philippegibaul...urationH2.java

    Ou plus exactement:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
           @Bean(name = "localContainerEntityManagerFactoryBean")
    	public LocalContainerEntityManagerFactoryBean getLocalContainerEntityManagerFactoryBean() {
    		LocalContainerEntityManagerFactoryBean bean = new LocalContainerEntityManagerFactoryBean();
    		bean.setDataSource(getDataSource());
    		bean.setPackagesToScan("com.calculateur.warhammer.entity.entity");
    		bean.setJpaVendorAdapter(getJpaVendorAdapter());
    		return bean;
    	}
    Et plus exactement:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    bean.setPackagesToScan("com.calculateur.warhammer.entity.entity");
    On doit pouvoir faire la m�me chose avec du XML...

  3. #3
    Membre tr�s actif

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    486
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 486
    Billets dans le blog
    5

Discussions similaires

  1. R�ponses: 0
    Dernier message: 28/08/2023, 09h20
  2. R�ponses: 2
    Dernier message: 10/10/2012, 12h02
  3. R�ponses: 6
    Dernier message: 06/02/2008, 17h16
  4. R�ponses: 1
    Dernier message: 16/05/2007, 15h52
  5. R�ponses: 1
    Dernier message: 04/12/2005, 18h02

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