eclipse中使用Hibernate遇到奇怪问题
本人使用的eclipse版本:3.2
Hibernate版本:3.0
Mysql版本:5.0
在工程中将Hibernate的包悉数导入,并且将Mysql的驱动包导入。
下面是本人的开发详细过程:
1、在数据库中创建myproject库。
2、在库中创建myusertabale表,其中包含字段:id(int,PK) ,UserName,Password,Email。
3、在工程中创建JavaBean: User,其中包含表中的4个字段的变量以及get,set方法。
4、在eclipse中生成Hibernate映射文件User.hbm.xml,和配置文件hibernate.cfg.xml。
5、在工程中创建测试类Test。
完成后尝试运行爆出异常:
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
org.hibernate.MappingException: Could not read mappings from resource: ch03/hibernate/User.hbm.xml
at org.hibernate.cfg.Configuration.addResource(Configuration.java:485)
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1465)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1433)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1414)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1390)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1310)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1296)
at ch03.hibernate.Test.main(Test.java:13)
Caused by: org.hibernate.MappingException: class hc03.hibernate.User not found while looking for property: id
at org.hibernate.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:80)
at org.hibernate.mapping.SimpleValue.setTypeUsingReflection(SimpleValue.java:276)
at org.hibernate.cfg.HbmBinder.bindSimpleId(HbmBinder.java:410)
at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:343)
at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:282)
at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:153)
at org.hibernate.cfg.Configuration.add(Configuration.java:386)
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:427)
at org.hibernate.cfg.Configuration.addResource(Configuration.java:482)
... 7 more
Caused by: java.lang.ClassNotFoundException: hc03.hibernate.User
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:108)
at org.hibernate.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:76)
... 15 more
异常中提示在映射文件User.hbm.xml中没有发现mapping,以及没有发现匹配id。
我打开文件检查并没有发现类似提示的错误。。。。。。。。。
User.hbm.xml的全部代码:
<?xml version= "1.0 " encoding= "UTF-8 "?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN " "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd " >
<hibernate-mapping>
<class name= "hc03.hibernate.User " table= "myusertable ">
<id name= "id ">
<generator class= " identity "> </generator>
</id>
<property name= "username "> </property>
<property name= "passowrd "> </property>
<property name= "email "> </property>
</class>
</hibernate-mapping>
hibernate.cfg.xml的全部代码:
<?xml version= "1.0 " encoding= "UTF-8 "?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN " "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd " >
<hibernate-configuration>
<session-factory>
<property name= "myeclipse.connection.profile ">
com.mysql.jdbc.Driver
</property>
<property name= "connection.url ">
jdbc:mysql://localhost:3306/MyProject
</property>
<property name= "connection.username "> root </property>
<property name= "connection.password "> root </property>
<property name= "connection.driver_class ">
sun.jdbc.odbc.JdbcOdbcDriver
</property>
<property name= "dialect ">
org.hibernate.dialect.MySQLDialect
</property>
<property name= "current_session_context_class "> thread </property>
<property name= "connection.pool_size "> 1 </property>
<property name= "cache.provider_class ">
org.hibernate.cache.NoCacheProvider
</property>
<property name= "show_sql "> true </property>
<property name= "hbm2ddl.auto "> create </property>
<mapping resource= "ch03/hibernate/User.hbm.xml " />
</session-factory>
</hibernate-configuration>
小弟刚刚开始接触Hibernate,请高手来帮捉捉虫子。
[解决办法]
应该是你的映射文件有问题吧.User.hbm.xml
[解决办法]
Could not read mappings from resource:
我遇到过类似的情况。。是 <mapping resource= "ch03/hibernate/User.hbm.xml " /> 的xml文件的路径问题。。。你可以试着改变路径”ch03/hibernate/User.hbm.xml“
改为hibernate/User.hbm.xml 或User.hbm.xml试试。或是别的。。。
不过可能你现在已经解决了。。。呵呵