hibernate.cfg.xml配置问题

tlowl 2006-05-08 09:04:44
我自己做了一个例子,struts1.2和hibernate2.1,mysql5.0,Tomcat5.5.17,eclipse3.0,MyEclipse3.8.4,配置文件用hibernate.properties就一切正常,但是用hibernate.cfg.xml就报错:

net.sf.hibernate.MappingException: Error reading resource: com/changer/hbm/bean/Customer.hbm.xml
at net.sf.hibernate.cfg.Configuration.addResource(Configuration.java:339)
at net.sf.hibernate.cfg.Configuration.doConfigure(Configuration.java:1018)
at net.sf.hibernate.cfg.Configuration.doConfigure(Configuration.java:974)
at net.sf.hibernate.cfg.Configuration.configure(Configuration.java:902)
at net.sf.hibernate.cfg.Configuration.configure(Configuration.java:888)
at com.changer.hbm.dao.CustomerDAO.<init>(CustomerDAO.java:31)
at com.changer.struts.action.CustomerAction.execute(CustomerAction.java:49)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
Caused by: net.sf.hibernate.MappingException: duplicate import: Customer
at net.sf.hibernate.cfg.Mappings.addImport(Mappings.java:85)
at net.sf.hibernate.cfg.Binder.bindClass(Binder.java:127)
at net.sf.hibernate.cfg.Binder.bindRootClass(Binder.java:222)
at net.sf.hibernate.cfg.Binder.bindRoot(Binder.java:1257)
at net.sf.hibernate.cfg.Configuration.add(Configuration.java:252)
at net.sf.hibernate.cfg.Configuration.addInputStream(Configuration.java:288)
at net.sf.hibernate.cfg.Configuration.addResource(Configuration.java:336)
... 26 more

我的hibernate.cfg.xml文件是eclipse自己生成的,而hibernate.propreties是我将项目发布到Tomcat后拷过去的,hibernate.cfg.xml的内容如下:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<!-- DO NOT EDIT: This is a generated file that is synchronized -->
<!-- by MyEclipse Hibernate tool integration. -->
<hibernate-configuration>
<session-factory>
<!-- properties -->
<property name="connection.username">root</property>
<property name="connection.url">jdbc:mysql://localhost:3306/testhibernate</property>
<property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>
<property name="connection.password">1234</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="show_sql">true</property>
<!-- mapping files -->
<mapping resource="com/changer/hbm/bean/Customer.hbm.xml" />
</session-factory>
</hibernate-configuration>

这两行代码分别是执行hibernate.cfg.xml和hibernate.properties用的
sessionFactory = config.configure().buildSessionFactory();
//sessionFactory = config.buildSessionFactory();

我觉得问题是出在这里Caused by: net.sf.hibernate.MappingException: duplicate import: Customer。我已经看过大部分资料,都没有找到合适的解决方案,我想知道为什么用hibernate.cfg.xml文件会报错,而这个文件应该没有空格或者是格式的问题,因为eclipse用的是hibernate.cfg.xml,所以我觉得大规模开发不会像我那样把hibernate.properties文件手动拷贝过去。哪位兄弟遇到过同样的问题,或者提点解决意见
...全文
145 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenshaizi 2006-05-08
  • 打赏
  • 举报
回复
注释掉:<mapping resource="com/changer/hbm/bean/Customer.hbm.xml" />
这一行.提示为重复导入了hbm.xml文件
tlowl 2006-05-08
  • 打赏
  • 举报
回复
呵呵,问题找到了,虽然你的方法不行,但是你的提示起了很大作用

有的时候还是得看源代码容易搞清楚,呵呵,犯得错误比较白痴

config.addClass(Customer.class);
sessionFactory = config.configure().buildSessionFactory();

加载了一次,又映射了一次,还是不够熟练啊

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧