如何解决Hibernate 5中出现的"Unknown entity"报错问题
异常根因
org.hibernate.MappingException: Unknown entity: HumanBeing 异常的核心原因是Hibernate未将HumanBeing类识别为合法的持久化实体,可按以下步骤排查修复:
排查&修复步骤
第一步:补全hibernate.cfg.xml中的实体映射配置
你当前的配置文件中没有声明需要扫描的实体类,在
session-factory节点末尾添加对应实体的映射(替换为你实际的实体类全限定名):<mapping class="你的包路径.HumanBeing"/> <mapping class="你的包路径.Coordinates"/> <mapping class="你的包路径.Car"/>关联的
Coordinates、Car实体也需要同步配置映射。第二步:修正@Table注解的属性
你当前实体类上的
@Table(appliesTo = "HumanBeing")写法错误,JPA标准@Table注解指定表名应使用name属性,修改为:@Entity @Table(name = "HumanBeing") public class HumanBeing { // 原有属性方法不变 }第三步:检查@Entity注解的导入包
确保导入的是JPA标准的实体注解,不要导错Hibernate私有的注解包:
import javax.persistence.Entity;第四步:检查实体类的无参构造函数
Hibernate要求所有持久化实体必须提供
public或protected级别的无参构造函数,如果你手动添加了带参构造,需要显式补写无参构造。备选方案:代码中手动注册实体类
如果不想在xml中配置映射,可以在HibernateUtil初始化SessionFactory时手动添加注解类:
sessionFactory = new Configuration() .configure() .addAnnotatedClass(HumanBeing.class) .addAnnotatedClass(Coordinates.class) .addAnnotatedClass(Car.class) .buildSessionFactory();
内容的提问来源于stack exchange,提问作者Степан Адамов
相关产品推荐
相关产品推荐

