我是一名Hibernate新手,嘗試一個帶有嵌入式Derby數據庫的小型hibernate示例。我在日食中發展。我沒有使用Spring或Maven,我沒有設置Web應用程序,我沒有應用程序服務器。如果項目變大,我肯定會使用其中的一些,但現在我只是試圖讓這個例子起作用。哪裏有... hbm.xml文件去?
我得到的錯誤是:
Exception in thread "main" org.hibernate.MappingNotFoundException: resource: javabeat/net/hibernate/EmployeeInfo.hbm.xml not found
,有時只是:
Exception in thread "main" org.hibernate.MappingNotFoundException: resource: EmployeeInfo.hbm.xml not found
這裏是我的代碼;我已標記,其中的錯誤似乎來自何處 - 日食控制檯顯示異常出現,停止運行,並且它是合乎邏輯的地方:
package javabeat.net.hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class JavaBeatHibernateExample
{
public static void main(String args[]) throws Exception
{
configureDerbyEmbedded();
Configuration cfg = new Configuration();
cfg.addClass(javabeat.net.hibernate.EmployeeInfo.class);
cfg.setProperty("hibernate.connection.driver_class", "org.apache.derby.jdbc.EmbeddedDriver");
cfg.setProperty("hibernate.connection.password", "password");
cfg.setProperty("hibernate.connection.url", "jdbc:derby:myEmbeddedDB;create=true");
cfg.setProperty("hibernate.connection.username", "admin");
cfg.setProperty("hibernate.dialect", "org.hibernate.dialect.DerbyDialect");
cfg.setProperty("cache.provider_class", "org.hibernate.cache.NoCacheProvider");
// Exception almost certainly generated here.
cfg.addResource("EmployeeInfo.hbm.xml");
cfg.setProperty("hibernate.current_session_context_class", "thread");
cfg.setProperty("hibernate.show_sql", "true");
SessionFactory sessionFactory = cfg.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
transaction.begin();
EmployeeInfo employeeInfo = new EmployeeInfo();
employeeInfo.setSno(1);
employeeInfo.setName("KamalHasan");
session.save(employeeInfo);
transaction.commit();
session.close();
}
private static void configureDerbyEmbedded()
throws ClassNotFoundException, IllegalAccessException, InstantiationException
{
Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
}
}
我在Eclipse中建立文件夾,如下所示
CarRepair
--src
----javabeat
------net
--------hibernate
----main
------resources
--------javabeat
----------net
------------hibernate
我有一個EmployeeInfo.hbm.xml,我已經把它在以下位置: 的src/javabeat/NET /休眠 主/資源/ javabeat/NET /休眠 主/資源
我總是得到上述例外。首先,它只是說它找不到XML文件;在後兩者中,它在錯誤消息中的XML文件名前加上了javabeat/net/hibernate。
應該是別的地方的文件,或者是有別的東西,我應該做的?
編輯:難道是什麼東西在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="javabeat.net.hibernate.EmployeeInfo" table="Employee_Info">
<id name="sno" column="sno" type="java.lang.Integer">
</id>
<property name="name" column="name" type="java.lang.String"/>
</class>
</hibernate-mapping>
蝕副本從src複製到倉的事情,所以這實際上並沒有幫助。 – arcy