Partage
  • Partager sur Facebook
  • Partager sur Twitter

Hibernate : Could not resolve root entity 'User'

Sujet résolu
    4 juillet 2022 à 21:33:44

    Bonjour,

    Je commence tout juste sur javafx/hibernate et je bloque sur une erreur que je n'arrive pas à résoudre. Pourriez-vous m'aider svp.

    Pour le contexte, j'ai une fenetre fxml pour me connecter avec un username et un password. Les users sont dans une base MySQL en localhost. J'ai essayé plusieurs méthodes d'utilisation d'hibernate sur internet, mais toujours la même erreur.

    Quand je clique sur "Se connecter", j'obtiens l'erreur "Could not resolve root entity 'User'".

    juil. 04, 2022 9:19:32 PM org.hibernate.Version logVersion
    INFO: HHH000412: Hibernate ORM core version 6.1.1.Final
    juil. 04, 2022 9:19:33 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
    WARN: HHH10001002: Using built-in connection pool (not intended for production use)
    juil. 04, 2022 9:19:33 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
    INFO: HHH10001005: Loaded JDBC driver class: com.mysql.cj.jdbc.Driver
    juil. 04, 2022 9:19:33 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
    INFO: HHH10001012: Connecting with JDBC URL [jdbc:mysql://localhost:3306/medbatapp]
    juil. 04, 2022 9:19:33 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
    INFO: HHH10001001: Connection properties: {password=****, user=root}
    juil. 04, 2022 9:19:33 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
    INFO: HHH10001003: Autocommit mode: false
    juil. 04, 2022 9:19:33 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>
    INFO: HHH10001115: Connection pool size: 1 (min=1)
    juil. 04, 2022 9:19:33 PM org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl logSelectedDialect
    INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
    Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    	at javafx.fxml/javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1787)
    	at javafx.fxml/javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1670)
    	at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    	at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    	at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    	at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    	at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    	at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    	at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    	at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    	at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    	at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    	at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    	at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    	at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    	at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
    	at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
    	at javafx.graphics/javafx.scene.Node.fireEvent(Node.java:8890)
    	at javafx.controls/javafx.scene.control.Button.fire(Button.java:203)
    	at javafx.controls/com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:206)
    	at javafx.controls/com.sun.javafx.scene.control.inputmap.InputMap.handle(InputMap.java:274)
    	at javafx.base/com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
    	at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
    	at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    	at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    	at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    	at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    	at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    	at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    	at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    	at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    	at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    	at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    	at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    	at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    	at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    	at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
    	at javafx.graphics/javafx.scene.Scene$MouseHandler.process(Scene.java:3862)
    	at javafx.graphics/javafx.scene.Scene.processMouseEvent(Scene.java:1849)
    	at javafx.graphics/javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2590)
    	at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:409)
    	at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:299)
    	at java.base/java.security.AccessController.doPrivileged(Native Method)
    	at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:447)
    	at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:412)
    	at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:446)
    	at javafx.graphics/com.sun.glass.ui.View.handleMouseEvent(View.java:556)
    	at javafx.graphics/com.sun.glass.ui.View.notifyMouse(View.java:942)
    	at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    	at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
    	at java.base/java.lang.Thread.run(Thread.java:829)
    Caused by: java.lang.reflect.InvocationTargetException
    	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    	at com.sun.javafx.reflect.Trampoline.invoke(MethodUtil.java:76)
    	at jdk.internal.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
    	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    	at javafx.base/com.sun.javafx.reflect.MethodUtil.invoke(MethodUtil.java:273)
    	at javafx.fxml/com.sun.javafx.fxml.MethodHelper.invoke(MethodHelper.java:83)
    	at javafx.fxml/javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1782)
    	... 50 more
    Caused by: java.lang.IllegalArgumentException: org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'User'
    	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:138)
    	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:175)
    	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:182)
    	at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:757)
    	at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:123)
    	at com.medbat.MedBatApp.dao.UserDao.getConnectedUser(UserDao.java:19)
    	at com.medbat.MedBatApp.controller.mainwindowcontrollers.LoginController.validateLogin(LoginController.java:94)
    	at com.medbat.MedBatApp.controller.mainwindowcontrollers.LoginController.loginUser(LoginController.java:66)
    	... 61 more
    Caused by: org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'User'
    	at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitRootEntity(SemanticQueryBuilder.java:1625)
    	at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitRootEntity(SemanticQueryBuilder.java:240)
    	at org.hibernate.grammars.hql.HqlParser$RootEntityContext.accept(HqlParser.java:1874)
    	at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitEntityWithJoins(SemanticQueryBuilder.java:1545)
    	at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitFromClause(SemanticQueryBuilder.java:1536)
    	at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitQuery(SemanticQueryBuilder.java:830)
    	at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitQuerySpecExpression(SemanticQueryBuilder.java:626)
    	at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitQuerySpecExpression(SemanticQueryBuilder.java:240)
    	at org.hibernate.grammars.hql.HqlParser$QuerySpecExpressionContext.accept(HqlParser.java:1218)
    	at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitSimpleQueryGroup(SemanticQueryBuilder.java:620)
    	at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitSimpleQueryGroup(SemanticQueryBuilder.java:240)
    	at org.hibernate.grammars.hql.HqlParser$SimpleQueryGroupContext.accept(HqlParser.java:1131)
    	at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitSelectStatement(SemanticQueryBuilder.java:396)
    	at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitStatement(SemanticQueryBuilder.java:355)
    	at org.hibernate.query.hql.internal.SemanticQueryBuilder.buildSemanticModel(SemanticQueryBuilder.java:282)
    	at org.hibernate.query.hql.internal.StandardHqlTranslator.translate(StandardHqlTranslator.java:81)
    	at org.hibernate.internal.AbstractSharedSessionContract.lambda$createQuery$2(AbstractSharedSessionContract.java:744)
    	at org.hibernate.query.internal.QueryInterpretationCacheStandardImpl.createHqlInterpretation(QueryInterpretationCacheStandardImpl.java:141)
    	at org.hibernate.query.internal.QueryInterpretationCacheStandardImpl.resolveHqlInterpretation(QueryInterpretationCacheStandardImpl.java:128)
    	at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:741)
    	... 65 more

    Voici mon code :

    login.fxml

    <?xml version="1.0" encoding="UTF-8"?>
    
    <?import javafx.scene.text.*?>
    <?import javafx.scene.control.*?>
    <?import com.jfoenix.controls.*?>
    <?import javafx.scene.image.*?>
    <?import java.lang.*?>
    <?import javafx.scene.layout.*?>
    <?import javafx.scene.layout.AnchorPane?>
    
    <AnchorPane prefHeight="701.0" prefWidth="380.0" stylesheets="@../css/styles.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.medbat.MedBatApp.controller.mainwindowcontrollers.LoginController">
       <children>
          <ImageView fitHeight="701.0" fitWidth="397.0" layoutY="1.0" opacity="0.78" pickOnBounds="true" preserveRatio="true">
             <image>
                <Image url="@../images/background_login_screen.jpg" />
             </image>
          </ImageView>
          <ImageView fitHeight="150.0" fitWidth="200.0" layoutX="100.0" layoutY="36.0" pickOnBounds="true" preserveRatio="true">
             <image>
                <Image url="@../images/d9c84abcf4b69b73c59b1c28682f47cd.png" />
             </image>
          </ImageView>
          <JFXTextField fx:id="username" focusColor="#081d5b" layoutX="69.0" layoutY="324.0" prefHeight="25.0" prefWidth="262.0" promptText="Nom d'utilisateur" />
          <JFXPasswordField fx:id="password" focusColor="#081d5b" layoutX="69.0" layoutY="391.0" prefHeight="25.0" prefWidth="262.0" promptText="Mot de passe" />
          <Label layoutX="140.0" layoutY="171.0" text="Connexion" textFill="#273b7a">
             <font>
                <Font name="System Bold" size="24.0" />
             </font>
          </Label>
          <JFXButton fx:id="loginBtn" layoutX="69.0" layoutY="482.0" onAction="#loginUser" prefHeight="35.0" prefWidth="262.0" styleClass="login_btn_connection" stylesheets="@../css/styles.css" text="Se connecter" textFill="#273b7a">
             <font>
                <Font name="System Bold" size="12.0" />
             </font></JFXButton>
          <JFXButton fx:id="exitBtn" layoutX="69.0" layoutY="546.0" prefHeight="35.0" prefWidth="262.0" styleClass="login_btn_exit" stylesheets="@../css/styles.css" text="Quitter" textFill="#273b7a">
             <font>
                <Font name="System Bold" size="12.0" />
             </font>
          </JFXButton>
          <Label fx:id="infoLbl" alignment="CENTER" layoutX="70.0" layoutY="642.0" prefHeight="17.0" prefWidth="262.0" textFill="#b21e1e" />
          <Label fx:id="infoWelcomeLbl" alignment="CENTER" layoutX="66.0" layoutY="251.0" prefHeight="17.0" prefWidth="262.0" textFill="#96d96c" />
       </children>
    </AnchorPane>
    


    LoginController.java

    package com.medbat.MedBatApp.controller.mainwindowcontrollers;
    
    import com.medbat.MedBatApp.dao.UserDao;
    import com.medbat.MedBatApp.helpers.CurrentUser;
    import com.medbat.MedBatApp.helpers.ScenePath;
    import com.medbat.MedBatApp.model.User;
    import com.medbat.MedBatApp.controller.mainwindowcontrollers.SceneController;
    
    import javafx.animation.PauseTransition;
    import javafx.event.ActionEvent;
    import javafx.fxml.FXML;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Node;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.control.Label;
    import javafx.scene.control.PasswordField;
    import javafx.scene.control.TextField;
    import javafx.stage.Stage;
    import javafx.util.Duration;
    
    import javax.swing.*;
    import java.io.IOException;
    import java.net.UnknownServiceException;
    import java.util.Arrays;
    import java.util.List;
    
    public class LoginController {
    
        @FXML
        private TextField username;
    
        @FXML
        private PasswordField password;
    
        @FXML
        private Label infoLbl;
    
        @FXML
        private Label infoWelcomeLbl;
    
        @FXML
        private Button exitBtn;
    
        UserDao userDao = new UserDao();
    
        @FXML
        private void initialize() {
        close();
        }
    
        @FXML
        private void loginUser(ActionEvent event) throws IOException, InterruptedException {
            String user = username.getText();
            String pass = password.getText();
    
            if(!validFields()) {
                infoLbl.setText("Username and password can't be empty!");
                return;
            }
            
            System.out.println(user);
            System.out.println(pass);
    
            if (!validateLogin()) {
                infoLbl.setText("User not found!");
                return;
            }
    
            
            infoWelcomeLbl.setText("Welcome, " + CurrentUser.getCurrentUser().getUserName() + "!");
            
            infoLbl.setText("Redirecting to main dashboard...");
    
            PauseTransition delay = new PauseTransition(Duration.seconds(2));
            delay.setOnFinished( event2 -> {
                try {
                    SceneController.getHomeScene(event);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            });
            delay.play();
        }
    
        boolean validFields() {
            return !username.getText().isEmpty() && !password.getText().isEmpty();
        }
    
        private boolean validateLogin() {
            System.out.println("valideLogin");
        	
        	User user = userDao.getConnectedUser(username.getText(), password.getText());
            if (user == null) {
                return false;
            }
            CurrentUser.setCurrentUser(user);
            return true;
        }
    
        private void close() {
            exitBtn.setOnAction(SceneController::close);
        }
    
    
    }
    


    UserDao.java

    package com.medbat.MedBatApp.dao;
    
    import com.medbat.MedBatApp.model.User;
    import com.medbat.MedBatApp.util.HibernateUtil;
    import org.hibernate.Session;
    import org.hibernate.Transaction;
    import org.hibernate.query.Query;
    import org.hibernate.resource.transaction.spi.TransactionStatus;
    
    import java.util.List;
    
    import javax.persistence.NoResultException;
    import javax.persistence.TypedQuery;
    
    public class UserDao {
    
    	 public User getConnectedUser(String userName, String password) {
            try (Session session = HibernateUtil.getSessionFactory().openSession()) {
                Query<User> query = session.createQuery("SELECT u FROM User u WHERE userName = :name AND password = :pass", User.class );
                query.setParameter("name", userName);
                query.setParameter("pass", password);
                return query.getSingleResult();
            } catch (NoResultException ex) {
                System.err.println("User not found");
                return null;
            }
    	}
        
        public void createUser(User user) {
            Transaction transaction = null;
            try (Session session = HibernateUtil.getSessionFactory().openSession()) {
                transaction = session.beginTransaction();
                session.saveOrUpdate(user);
                transaction.commit();
            } catch (Exception ex) {
                if (transaction != null) {
                    transaction.rollback();
                }
                ex.printStackTrace();
            }
        }
    
        public User getUser(Long id) {
            try (Session session = HibernateUtil.getSessionFactory().openSession()) {
                return session.find(User.class, id);
            } catch (Exception ex) {
                ex.printStackTrace();
                return null;
            }
        }
    }
    


    User.java

    package com.medbat.MedBatApp.model;
    
    import lombok.Getter;
    import lombok.Setter;
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.Table;
    
    @Entity
    @Getter @Setter
    @Table(name = "user")
    public class User {
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "idUser")
        private Integer idUser;
        
        @Column(name = "firstName")
        private String firstName;
        
        @Column(name = "lastName")
        private String lastName;
    
        @Column(name = "userName")
        private String userName;
    
        @Column(name = "password")
        private String password;
    }
    


    HibernateUtil.java

    package com.medbat.MedBatApp.util;
    
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
     
    public class HibernateUtil {
     
        private static final SessionFactory sessionFactory = buildSessionFactory();
     
        private static SessionFactory buildSessionFactory() {
            try {
                // Create the SessionFactory from hibernate.cfg.xml
                return new Configuration().configure().buildSessionFactory();
            } catch (Throwable ex) {
                // Make sure you log the exception, as it might be swallowed
                System.err.println("Initial SessionFactory creation failed." + ex);
                throw new ExceptionInInitializerError(ex);
            }
        }
     
        public static SessionFactory getSessionFactory() {
            return sessionFactory;
        }
     
        public static void shutdown() {
            // Close caches and connection pools
            getSessionFactory().close();
        }
     
    }
    


    hibernate.cfg.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//EN" 
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
    	 <session-factory>
    	 
    	    <property name="connection.url">jdbc:mysql://localhost:3306/medbatapp</property>
    	    <property name="connection.username">root</property>
    	    <property name="connection.password">test</property>
    	    <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
    	    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    	 
    	    <property name="show_sql">true</property>
    	 
    	    <property name="format_sql">true</property>
    	 
    	    <!-- JDBC connection pool (use the built-in) -->
    	    <property name="connection.pool_size">1</property>
    	    <property name="current_session_context_class">thread</property>
    	    
    	    <!-- Disable the second-level cache  -->
    	    <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
    	    
    	    <mapping class="com.medbat.MedBatApp.model.User"/>
    	</session-factory>
    </hibernate-configuration>


    Ma table 

    Je pense avoir rien oublié. Auriez-vous une idée svp ?

    Merci d'avance de votre aide :)

    -
    Edité par SnSn 4 juillet 2022 à 21:38:12

    • Partager sur Facebook
    • Partager sur Twitter
      5 juillet 2022 à 22:50:57

      Bonjour,

      J'ai résolu mon problème. Il ne faut pas utiliser "javax.persistence", mais "jakarta.persistence".

      import jakarta.persistence.Column;
      import jakarta.persistence.Entity;
      import jakarta.persistence.GeneratedValue;
      import jakarta.persistence.GenerationType;
      import jakarta.persistence.Id;
      import jakarta.persistence.Table;

      Depuis la version 6.0, hibernate utilise jakarta.persistence et non plus javax.persistence si j'ai bien compris. J'utilise hibernate 6.1.1.

      Voilà si quelqu'un a le même problème que moi dans le futur :)

      • Partager sur Facebook
      • Partager sur Twitter

      Hibernate : Could not resolve root entity 'User'

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown