第一个hibernate实例发现对象的配置文件(Customer.hbm.xml )找不到?
我用的是jb9,hibernate2.1
我把所要用到的文件都放到了,jb9下我建的工程下的src里去了,具体路径是:
E:\java\JB9\TestHinernate\src\com\test\hibernate,下面有四个文件分别为:
Customer.hbm.xml:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="Customer" table="CUSTOMER">
<id name="id" column="CID">
<generator class="increment" />
</id>
<property name="username" column="USERNAME" />
<property name="password" column="PASSWORD" />
</class>
</hibernate-mapping>
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 name="java:comp/env/hibernate/SessionFactory">
<property name="hibernate.connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property>
<property name="hibernate.connection.url">jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password">dagang</property>
<property name="hibernate.connection.pool.size">6</property>
<property name="jdbc.fetch_size">50</property>
<property name="jdbc.batch_size">25</property>
<property name="jdbc.use_scrollable_resultset">false</property>
<property name="hibernate.show_sql">false</property>
<property name="hibernate.cache.use_query_cache">true</property>
<property name="use_outer_join">true</property>
<!-- Mapping files -->
<mapping resource="E:/java/JB9/TestHinernate/src/com/test/hibernate/Customer.hbm.xml"/>
</session-factory>
<!---->
</hibernate-configuration>
Customer.java:
这个文件就是一些个set,get方法,
Test.java:
package com.test.hibernate;
import java.io.File;
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;
public class Test {
public static void main(String[] args) {
try {
SessionFactory sf = new Configuration().configure(new File("E:/java/JB9/TestHinernate/src/com/test/hibernate/hibernate.cfg.xml")).buildSessionFactory();
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
for (int i = 0; i < 200; i++) {
Customer customer = new Customer();
customer.setUsername("customer" + i);
customer.setPassword("customer");
session.save(customer);
}
tx.commit();
session.close();
} catch (HibernateException e) {
e.printStackTrace();
}
}
}
运行Test.java错误提示为:
net.sf.hibernate.MappingException: Resource: E:/java/JB9/TestHinernate/src/com/test/hibernate/Customer.hbm.xml not found
at net.sf.hibernate.cfg.Configuration.addResource(Configuration.java:289)
at net.sf.hibernate.cfg.Configuration.doConfigure(Configuration.java:944)
at net.sf.hibernate.cfg.Configuration.doConfigure(Configuration.java:896)
at net.sf.hibernate.cfg.Configuration.configure(Configuration.java:866)
at com.test.hibernate.Test.main(Test.java:10)
实在在找不到解决的办法,请大家帮帮我。
问题点数:30、回复次数:5Top
1 楼flyxxxxx()回复于 2005-08-18 10:35:06 得分 11
config文件中不能用绝对路径,要用类路径:com/test/hibernate/Customer.hbm.xmlTop
2 楼pianfuqing(情归何处?)回复于 2005-08-18 13:52:46 得分 0
我按着你的方法做了,还是有错误:
net.sf.hibernate.MappingException: Error reading resource: com/test/hibernate/Customer.hbm.xml
at net.sf.hibernate.cfg.Configuration.addResource(Configuration.java:294)
at net.sf.hibernate.cfg.Configuration.doConfigure(Configuration.java:944)
at net.sf.hibernate.cfg.Configuration.doConfigure(Configuration.java:896)
at net.sf.hibernate.cfg.Configuration.configure(Configuration.java:866)
at com.test.hibernate.Test.main(Test.java:10)
Caused by: net.sf.hibernate.MappingException: persistent class [Customer] not found
at net.sf.hibernate.cfg.Binder.bindClass(Binder.java:81)
at net.sf.hibernate.cfg.Binder.bindRootClass(Binder.java:207)
at net.sf.hibernate.cfg.Binder.bindRoot(Binder.java:1167)
at net.sf.hibernate.cfg.Configuration.add(Configuration.java:245)
at net.sf.hibernate.cfg.Configuration.addInputStream(Configuration.java:268)
at net.sf.hibernate.cfg.Configuration.addResource(Configuration.java:291)
... 4 more
Caused by: java.lang.ClassNotFoundException: Customer
at java.net.URLClassLoader$1.run(URLClassLoader.java:198)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:186)
at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:265)
at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:315)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:140)
at net.sf.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:75)
at net.sf.hibernate.cfg.Binder.bindClass(Binder.java:78)
... 9 more
麻烦你在看一下吧!Top
3 楼tanguangbin(向前飞之牛牛在线)回复于 2005-08-18 14:10:31 得分 8
Caused by: java.lang.ClassNotFoundException: Customer
Customer.CLASS 没有找到
你确定你的Customer.CLASS 文件和Customer.hbm.xml文件 放在com/test/hibernate/文件夹下吗?Top
4 楼hlsps(小鱼)回复于 2005-08-18 14:29:18 得分 11
<class name="Customer" table="CUSTOMER">
如果这个类在包里的话.要加上包的路径.
Top
5 楼pianfuqing(情归何处?)回复于 2005-08-18 17:52:20 得分 0
我的问题OK了,主要有两个原因,一:<class name="Customer" table="CUSTOMER">我应该加上包的路径;二:config文件中不能用绝对路径,要用类路径。
谢谢大家认真看了我的程序,真的很感谢啊!祝你们身体健康!!Top




