读书人

net.sf.hibernate.MappingException:

发布时间: 2011-12-11 23:19:43 作者: rapoo

hibernate配置文件路径问题!!急啊!两三天了还没解决!
代码调试错误信息:
net.sf.hibernate.MappingException: Error reading resource: ems_sh/hibernate/mapping_files/User.hbm.xml
at net.sf.hibernate.cfg.Configuration.addResource(Configuration.java:318)
at net.sf.hibernate.cfg.Configuration.doConfigure(Configuration.java:976)
at net.sf.hibernate.cfg.Configuration.doConfigure(Configuration.java:928)
at net.sf.hibernate.cfg.Configuration.configure(Configuration.java:856)
at net.sf.hibernate.cfg.Configuration.configure(Configuration.java:842)
at ems_sh.hibernate.HibernateUtil. <clinit> (HibernateUtil.java:13)
at ems_sh.struts.action.LoginAction.execute(LoginAction.java:22)
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:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1072)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6981)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3892)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2766)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
Caused by: net.sf.hibernate.MappingException: persistent class [ems_sh.hibernate.entity_class.User] not found
at net.sf.hibernate.cfg.Binder.bindClass(Binder.java:84)
at net.sf.hibernate.cfg.Binder.bindRootClass(Binder.java:221)
at net.sf.hibernate.cfg.Binder.bindRoot(Binder.java:1229)
at net.sf.hibernate.cfg.Configuration.add(Configuration.java:249)
at net.sf.hibernate.cfg.Configuration.addInputStream(Configuration.java:285)
at net.sf.hibernate.cfg.Configuration.addResource(Configuration.java:315)
... 22 more
Caused by: java.lang.ClassNotFoundException: ems_sh.hibernate.entity_class.User
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:199)
at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:61)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:224)
at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:41)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:141)
at net.sf.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:86)
at net.sf.hibernate.cfg.Binder.bindClass(Binder.java:81)
... 27 more


Initial SessionFactory creation failed.


hibernate.cfg.xml文件:
<?xml version= '1.0 ' encoding= 'utf-8 '?>
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN "
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd ">

<hibernate-configuration>

<session-factory>

<!-- Database connection settings -->
<property name= "connection.driver_class "> oracle.jdbc.driver.OracleDriver </property>
<property name= "connection.url "> jdbc:oracle:thin:@localhost:1521:o9idb </property>
<property name= "connection.username "> ycx </property>
<property name= "connection.password "> ycx </property>

<!-- JDBC connection pool (use the built-in) -->
<property name= "connection.pool_size "> 1 </property>
<property name= "c3p0.max_size "> 5 </property>
<property name= "c3p0.timeout "> 600 </property>

<!-- SQL dialect -->
<property name= "dialect "> net.sf.hibernate.dialect.Oracle9Dialect </property>

<!-- Use EHCache but not the query cache. -->
<property name= "cache.provider_class "> net.sf.ehcache.hibernate.Provider </property>
<property name= "cache.use_query_cache "> false </property>
<property name= "cache.use_minimal_puts "> false </property>

<!-- Print SQL to stdout.
<property name= "show_sql "> true </property> -->

<!-- Create the tables
<property name= "hibernate.hbm2ddl.auto "> update </property> -->


<mapping resource= "ems_sh/hibernate/mapping_files/User.hbm.xml "/>

</session-factory>

</hibernate-configuration>


User.hbm.xml文件:
<?xml version= '1.0 ' encoding= 'utf-8 '?>


<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN "
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd ">

<hibernate-mapping>
<class name= "ems_sh.hibernate.entity_class.User " table= "user_table ">
<id name= "id " type= "integer ">
<column name= "id " />
<generator class= "native "/>
</id>

<property name= "name " type= "string ">
<column name= "name " />
</property>

<property name= "password " type= "string ">
<column name= "password " />
</property>

<property name= "user_type " type= "string ">
<column name= "user_type " />
</property>
</class>

</hibernate-mapping>

LoginAction 文件 里面什么都还没做就了几句就这样了 具体讲是Session s = HibernateUtil.currentSession();执行后就出问题

package ems_sh.struts.action;

import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
import ems_sh.struts.form.LoginActionForm;
import org.apache.struts.action.Action;


import javax.servlet.http.HttpSession;
import ems_sh.hibernate.HibernateUtil;
import net.sf.hibernate.Session;

public class LoginAction
extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
HttpSession session = request.getSession();
Session s = HibernateUtil.currentSession();
LoginActionForm loginActionForm = (LoginActionForm) form;

/*
String utype =loginActionForm.getUtype();
String uname =loginActionForm.getUname();


String pwd =loginActionForm.getPwd();
String[] userlist = new String[2];
*/



return mapping.findForward( "home ");
}
}
等待高手指点

[解决办法]


<mapping resource= "ems_sh/hibernate/mapping_files/User.hbm.xml "/>
这样写是没问题的~

检查你的hibernate.cfg.xml加载路劲对不对;

你是用myeclipse生成的hbm的么?
删掉之前生成的,全部重新生成一次~

[解决办法]

<classpath>
<classpathentry kind= "src " path= "src "/>
<classpathentry kind= "con " path= "org.eclipse.jdt.launching.JRE_CONTAINER "/>
<classpathentry kind= "con " path= "org.eclipse.jdt.USER_LIBRARY/lib_pms "/>
<classpathentry kind= "output " path= "web/WEB-INF/classes "/>
</classpath>

这是我的配置~

[解决办法]
学习中
[解决办法]
<mapping resource= "classpath:ems_sh/hibernate/mapping_files/User.hbm.xml "/>
改为
<mapping resource= "User.hbm.xml "/>
然后
User.hbm.xml跟hibernate.cfg.xml放同一地方
试一下吧

再有错的话,你就往电脑里面灌水,看他还错不错
[解决办法]

HibernateUtil.java的第13行就是这个吧?
sessionFactory = new Configuration().configure()
.buildSessionFactory();
报的建立sessionfactory出错,就是因为你的hibernate.cfg.xml--> User.hbm.xml--> User.java
这3个关联关系在哪一层出错了~因为不能加载User.hbm.xml;
其实,最先检查调用hibernate.cfg.xml的文件,我不知道你是怎么配置的,因为我是用spring代理的,所以在applicationContext.xml中
<!-- sessionFactory -->
<bean id= "sessionFactory " class= "org.springframework.orm.hibernate3.LocalSessionFactoryBean ">
<property name= "configLocation ">
<value> /WEB-INF/hibernate.cfg.xml </value>
</property>
</bean>
先仔细检查hibernate.cfg.xml,User.hbm.xml,User.java单个文件,然后再对应其关联关系;

读书人网 >Java Web开发

热点推荐