hibernate: Duplicate class/entity; Could not parse mapping document from resource

2023-10-31

近日在学习Hibernate时,总是遇到以下异常:

org.hibernate.InvalidMappingException: Could not parse mapping document from resource kpy/db/Customer.hbm.xml
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXml(Configuration.java:3415)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXmlQueue(Configuration.java:3404)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3392)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1341)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1737)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1788)
    at kpy.db.CustomerDao.<clinit>(CustomerDao.java:24)
    at kpy.HibernateDemo.App.main(App.java:15)
Caused by: org.hibernate.DuplicateMappingException: Duplicate class/entity mappingkpy.db.Customer
    at org.hibernate.cfg.Configuration$MappingsImpl.addClass(Configuration.java:2580)
    at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:174)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXml(Configuration.java:3412)
    ... 7 more


测试代码如下:

	private static SessionFactory sessionFactory;
	
	static {
		try{
			Configuration config = new Configuration();
			LogWriter.info("new Configuration success.");
			
			// 以下这一句不能少,少了报异常:hibernate Connection cannot be null when 'hibernate.dialect' not set
			config.configure("/kpy/db/hibernate.cfg.xml");
			
			config.addClass(Customer.class);
			LogWriter.info("add Customer.class success.");
			
			sessionFactory = config.buildSessionFactory();
			
			LogWriter.info("build buildSessionFactory success.");
			
		}catch (Exception e){
			e.printStackTrace();
		}
	}

查找了大量资料,总是找解决问题:原因在于代码中,红色的两句。

在文件/kpy/db/hibernate.cfg.xml中,已经包含了以下这一句:

<mapping resource="kpy/db/Customer.hbm.xml"/>

而在文件中kpy/db/Customer.hbm.xml有如下定义。

<class name="kpy.db.Customer" table="CUSTOMERS">

进行config.configure("/kpy/db/hibernate.cfg.xml");操作时,对XML文件进行解析。根据<class name="kpy.db.Customer" table="CUSTOMERS">已经知道了需要对kpy.db.Customer做映射,因此不再需要config.addClass(Customer.class);  


在《精通 Hibernate:Java 对象持久化技术详解(第2版)》一书4.5小节中,有如下描述:

如果Hibernate的配置文件为XML格式,只需要在配置文件中声明映射文件,在程序中不必调用Configuration类的AddClass()方法来加载映射文件。当映射文件名发生变化,只需要修改XML格式的配置文件,不需要修改程序代码,因此XML格式的配置文件会提高应用程序的可维护性。




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hibernate: Duplicate class/entity; Could not parse mapping document from resource 的相关文章

随机推荐

  • Qt学习 之 Socket通信(世界上最简单的例子了)

    最近写大作业用到Qt的Socket部分 网上关于这部分的资料都太过复杂 现在总结一下一些简单的应用 有机会可以给大家讲讲用Socket传送文件的代码 这里主要讲解如何实现TCP和UDP的简单通信 socket简介 在LINUX下进行网络编程
  • 3、约瑟夫问题的一种描述是:编号为1,2,……,n的n个人按顺时针方向坐一圈,每人持有一个密码(正整数)。一开始任选一个作为报数上限值m,从第一个开始顺时针自1开始顺序报数,报到m是停止报数。报m的人

    题目 3 约瑟夫问题的一种描述是 编号为1 2 n的n个人按顺时针方向坐一圈 每人持有一个密码 正整数 一开始任选一个作为报数上限值m 从第一个开始顺时针自1开始顺序报数 报到m是停止报数 报m的人出列 将他的密码作为新的m值 从他在顺时针
  • Selenium简单登录测试

    起先使用最新版火狐selenium被禁用 后改用54版 使用selenium测试我要自学网登录过程 登录之前显示如下 登录后显示如下 先打开我要自学网和selenium 将我要自学网的网址复制到selenium的Base URL 按下录制按
  • AOP源码解析(2)AnnotationAwareAspectAutoProxyCreator---Spring源码从入门到精通(十九)

    上篇文章主要讲了AOP的 EnableAspectAutoProxy注解 里面导入的类和执行的后置处理器 AOP源码解析 1 Spring源码从入门到精通 十八 阅读本篇文章 一定要先阅读上篇文章 运行的源码是基于上篇文章的代码 才方便理解
  • DERT:End-to-End Object Detection with Transformers

    文章目录 摘要 1 简介 2 相关工作 2 1 集合预测 2 2 Transformer与并行解码 2 3 目标检测 3 DETR模型 3 1 目标检测集合预测损失 3 2 DETR架构 4 实验 4 1 与Faster R CNN的对比
  • 【UE 粒子练习】06——创建条带类型粒子

    效果 下图呈现的是一种条带粒子跟随普通粒子移动的效果 其中 条带粒子为下图中蓝色部分 橙色部分为普通粒子 步骤 1 新建一个材质 命名为 Mat Ribbon 将用于条带粒子材质 材质域设置为表面 混合模式设置为半透明 着色模型设置为无光照
  • Java、python及phpstudy的环境配置

    由于重装了系统 电脑上啥都没了 正好借此机会写一些从空白开始配置新电脑 希望多踩一点坑 才能帮更多的人解决问题 本文是小白向的 学习过程中看到一些教程缺胳膊少腿 可能会漏掉一些博主觉得easy但是是我不确定的点的地方 所以本篇可能有点啰嗦
  • 期望、方差、协方差与相关系数

    1 利用切比雪夫不等式可以证明方差为0意味着随机变量的取值集中在一点上 2 从协方差可以得到两个变量增减的趋势 称为相关性 3 不相关 比 独立 更弱的概念 独立 必导致 不相关 不相关 不一定导致 独立 4 相关系数是相应标准化变量的协方
  • 使用Termux在安卓手机上运行tomcat服务器

    使用Termux在安卓手机上安装运行tomcat服务器 简单背景 探索尝试 尝试一 使用limbo虚拟机 失败 想念二 使用Linux Deploy安装 直接放弃 尝试三 使用Aid Learning 成功但搁置 尝试四 使用Termux直
  • Django之数据库并发处理

    1 数据库并发处理问题 在多个用户同时发起对同一个数据提交修改操作时 先查询 再修改 会出现资源竞争的问题 导致最终修改的数据结果出现异常 比如限量商品在热销时 当多个用户同时请求购买商品时 最终修改的数据就会出现异常 下面我们来写点代码还
  • getline()的使用详解

    一 getline int main string line while getline cin line cout lt
  • 图像去噪的OPenCV添加噪声和去噪

    添加噪声 添加高斯噪声 IplImage AddGuassianNoise IplImage src 添加高斯噪声 IplImage dst cvCreateImage cvGetSize src src gt depth src gt n
  • sass的日常使用

    sass跟css的简单对比 css 由于CSS的语法不够强大 没有变量和合理的样式复用机制 使得逻辑上相关的属性值必须以字面的形式反复出现 导致难以维护 而动态演示语言为CSS赋予了动态语言的特性 极大的提高了样式语言的可维护性 sass
  • github.com访问慢解决

    修改hosts HOSTS文件路径 C Windows System32 drivers etc hosts 1 打开Dns查询 站长工具 http tool chinaz com dns 2 搜索http github com 3 把TT
  • 使用Linux内核里的spi屏驱动-fbtft

    Linux内核里已经提供spi接口小屏的设备驱动 在内核的配置选项 make menuconfig ARCH arm CROSS COMPILE arm linux gnueabihf Device Drivers gt Graphics
  • 多线程练习之:生产电脑

    生产电脑 题目 设计一个生产电脑和搬运电脑类 要求生产出一台电脑就搬走一台电脑 如果没有新的电脑生产出来 则搬运工要等待新电脑产出 如果生产出的电脑没有搬走 则要等待电脑搬走之后再生产 并统计出生产的电脑数量 public class Co
  • python乘法出现小数位很多_js小数运算出现多位小数如何解决

    小数相乘出现很多位小数的问题 这个问题自己以前也遇到过 现在特意来总结一下 Number类型 Number类型是ECMAScript中最常用和最令人关注的类型了 这种类型使用IEEE754格式来表示整数和浮点数值 浮点数值在某些语言中也被成
  • 字节跳动前端面经

    面试经历 我入职字节大概一个多月 目前准大四 实习生 现在写面经不仅仅是牛客网 YYSD 真tm灵 的还愿 还是就是想给大家推荐推荐我们部门 技术中台 可能大家对技术中台不太了解 但是大家肯定听说过掘金吧 我们组主要负责ByteTech 字
  • 相机的信噪比

    在图像传感器的成像过程中 真实的信号是无法探测到的理想值 在成像过程中理想值被引入了一系列的不确定性 最终形成读出信号也即图像 此过程中的不确定性被统一称为噪声 而信号与噪声的比值被定义为信噪比 Signal to NoiseRatio S
  • hibernate: Duplicate class/entity; Could not parse mapping document from resource

    近日在学习Hibernate时 总是遇到以下异常 org hibernate InvalidMappingException Could not parse mapping document from resource kpy db Cus