Caused by: org.hibernate.DuplicateMappingException: Duplicate class/entity


今天整合SSH2的时候碰到了个hibernate映射出错了。 
异常如下 
%%%% Error Creating SessionFactory %%%% 
org.hibernate.InvalidMappingException: Could not parse mapping document from resource com/innoact/pojo/User.hbm.xml 
at org.hibernate.cfg.Configuration.addResource(Configuration.java:569) 
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1587) 
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1555) 
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1534) 
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1508) 
at org.hibernate.cfg.Configuration.configure(Configuration.java:1428) 
at com.innoact.util.HibernateSessionFactory.rebuildSessionFactory(HibernateSessionFactory.java:59) 
at com.innoact.util.HibernateSessionFactory.getSession(HibernateSessionFactory.java:43) 
at com.innoact.junit.test.SpringBeanTest.main(SpringBeanTest.java:24) 
Caused by: org.hibernate.DuplicateMappingException: Duplicate class/entity mapping com.innoact.pojo.User at org.hibernate.cfg.Mappings.addClass(Mappings.java:118) 
at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:145) 
at org.hibernate.cfg.Configuration.add(Configuration.java:669) 
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:504) 
at org.hibernate.cfg.Configuration.addResource(Configuration.java:566) 
... 8 more
 
关键是这一句 
Caused by: org.hibernate.DuplicateMappingException: Duplicate class/entity mapping com.innoact.pojo.User我想很多人也遇到过吧,出现这个问题有很多原因,但是异常就是告诉pojo类映射文件重复了。我是在spring中这样配置的 
Xml代码   收藏代码
  1. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  2.     <property name="dataSource" ref="dataSource"></property>  
  3.  <property name="configLocation">   
  4.         <value>classpath:hibernate.cfg.xml</value>   
  5.   </property>    

因为hibernate映射实体类会很多,所以就单独写了个hibernate.cfg.xml文件。 
问题的关键就在这里。导入hibernate包的时候MyEclipse会自动生成一个HibernateSessionFactroy类,对吧? 
很多人都是直接通过HibernateSessionFactory.getSession()获取session的。 
但是我的测试类是这样写的 
Java代码   收藏代码
  1. public class SpringBeanTest{  
  2.     public static void main(String args[]){  
  3.         ApplicationContext ac= new ClassPathXmlApplicationContext("file:WebRoot\\WEB-INF\\applicationContext.xml");  
  4.         Session session=HibernateSessionFactory.getSession();  

首先读取spring的配置文件,然后通过HibernateSessionFactory获取Session。但是我们都忘了,spring当中有引用hibernate.cfg.xml而且HibernateSessionFactory也会从hibernate.cfg.xml相关配置信息。所以导致hibernate对实体类映射配置重复。才会出现 
Duplicate class/entity异常。 
虽然不一定所有报这个异常是因为这个原因,但是还是肯定会有人会因为这个而摸不找头脑。这个问题我可弄了一天,吃饭中无意发觉。希望对新手们有帮助。看来以后还是要多细心啊! 
最后说一下,解决办法就是不要通过HibernateSessionFactory获取Session
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个问题可能是由于数据库字段包含了数据库的关键字或保留字所导致的。你可以检查一下映射文件中的表名、目录名,以及配置是否正确。有时,默认的配置是使用项目名称作为数据库名,所以当上传时可能会报错找不到。此外,还可以检查是否缺少了某些类文件,比如出现了`Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type`异常。我们建议你仔细检查这些可能导致问题的因素,并进行相应的修复。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Caused by: org.hibernate.exception.SQLGrammarExcep](https://blog.csdn.net/venus224/article/details/83281470)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [org.hibernate.exception.SQLGrammarException错误](https://blog.csdn.net/wenzhenyu1990/article/details/8700130)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.Transformer异常](https://download.csdn.net/download/weixin_38642864/12723222)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值