Hibernate 6.6.1报错:Unable to locate entity descriptor求助
解决Hibernate 6.6.1中UnknownEntityTypeException(找不到Student实体)的排查步骤
检查Student实体类的注解与包名
必须给实体类添加@Entity注解,注意Hibernate 6使用Jakarta EE的API,要导入jakarta.persistence.Entity而非旧的javax包。同时主键字段要加@Id注解,示例代码:package com.model; import jakarta.persistence.Entity; import jakarta.persistence.Id; @Entity public class Student { @Id private Integer id; private String name; // 记得编写getter、setter和无参构造方法 }核对包名和类名是否完全匹配错误提示里的
com.model.Student,大小写、拼写都不能出错。确认hibernate.cfg.xml中注册了实体
在<session-factory>标签内添加实体映射,二选一即可:- 单个实体注册:
<mapping class="com.model.Student"/> - 批量扫描整个包:
<mapping package="com.model"/>
别把映射配置放在
<session-factory>标签外部,否则Hibernate无法识别。- 单个实体注册:
验证HibernateUtil的配置加载逻辑
确保工具类正确读取配置文件,示例代码:public class HibernateUtil { private static final SessionFactory sessionFactory = buildSessionFactory(); private static SessionFactory buildSessionFactory() { try { return new Configuration().configure().buildSessionFactory(); } catch (Throwable ex) { throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } }如果配置文件不在默认的
src/main/resources路径下,要在configure()中指定完整路径,比如configure("config/hibernate.cfg.xml")。检查项目编译与依赖
- 确认Hibernate 6.6.1的依赖正确引入,比如Maven的pom.xml:
<dependency> <groupId>org.hibernate.orm</groupId> <artifactId>hibernate-core</artifactId> <version>6.6.1.Final</version> </dependency> - 查看target/classes目录下是否存在编译后的
com/model/Student.class文件,实体类编译失败会导致Hibernate无法找到它。
- 确认Hibernate 6.6.1的依赖正确引入,比如Maven的pom.xml:
注解配置的补充检查
如果没在xml里配置映射,而是用代码方式添加实体,要确保在Configuration中调用addAnnotatedClass:new Configuration().addAnnotatedClass(com.model.Student.class).configure().buildSessionFactory();
内容的提问来源于stack exchange,提问作者user27816658
相关产品推荐
相关产品推荐

