Eclipse中Hibernate映射异常:Author表映射不存在求助
嘿,我来帮你搞定这个「mapping doesn’t exists for Author」的报错!你说在Eclipse里用Hibernate Tools能正常看到数据库表和关系图,但Tomcat一跑就出问题,这大概率是部署时Hibernate没正确加载到Author的映射配置,咱们一步步排查:
检查Hibernate核心配置文件的映射声明
打开你的hibernate.cfg.xml(如果是Spring整合则看sessionFactory配置),确认是否包含Author类的映射:- 如果你用注解方式(Author类上有
@Entity注解),要添加:<mapping class="com.catalog.Catalog.Models.Author"/> - 如果你用XML映射文件(比如
Author.hbm.xml),要添加:<mapping resource="com/catalog/Catalog/Models/Author.hbm.xml"/>
另外,如果是注解模式,还要确保配置了注解自动检测:
<property name="hibernate.archive.autodetection" value="class, hbm"/>- 如果你用注解方式(Author类上有
确认映射资源的类路径位置
- 要是用XML映射文件,必须保证它和
Author.java在同一个包结构下,并且编译后能出现在Tomcat部署目录的WEB-INF/classes对应路径里(比如WEB-INF/classes/com/catalog/Catalog/Models/Author.hbm.xml)。如果你的映射文件放在src/main/resources下,要对应创建相同的包结构(src/main/resources/com/catalog/Catalog/Models) - 仔细核对
Author.java的包名:代码里是com.catalog.Catalog.Models,Hibernate对包名、类名的大小写完全敏感,别出现拼写或大小写错误!
- 要是用XML映射文件,必须保证它和
检查编译后的文件是否存在
去Tomcat的部署目录(比如work/Catalina/localhost/你的项目名/WEB-INF/classes/com/catalog/Catalog/Models)查看:- 有没有
Author.class文件? - 对应的映射文件(如果是XML的话)是否存在?
如果缺失,说明Eclipse没把这些文件编译复制到输出目录:右键项目→Build Path→Configure Build Path,在Source标签里确认你的源码目录(包含实体类和映射文件的)的Output Folder指向正确的WEB-INF/classes
- 有没有
注解实体类的额外检查
打开Author.java,确认:- 类上是否添加了
@Entity注解? @Table(name = "xxx")的name属性是否和数据库表名完全一致?- 如果是Spring整合Hibernate,要确保sessionFactory配置里扫描到了这个包,比如:
<context:component-scan base-package="com.catalog.Catalog.Models"/>
- 类上是否添加了
清理缓存并重新部署
有时候是旧缓存搞的鬼:- 删除Tomcat的
work目录 - 在Eclipse里点击
Project→Clean,清理项目编译文件 - 重新部署项目到Tomcat
- 删除Tomcat的
内容的提问来源于stack exchange,提问作者Nina33
相关产品推荐
相关产品推荐

