2016-05-03 8 views
3

私は、小さな例を使って休止状態を実装するために私の手を試しています。以下はorg.hibernate.boot.MappingNotFoundException:マッピング(RESOURCE)が見つかりません

私はエラーorg.hibernate.boot.MappingNotFoundExceptionを取得していたコードを実行している場合は、私のhibernate.config.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="connection.driver_class"> 
com.mysql.jdbc.Driver 
</property> 
<property name="connection.url"> 
jdbc:mysql://localhost:3306/abc 
</property> 
<property name="connection.username">root</property> 
<property name="connection.password"></property> 
<property name="dialect"> 
org.hibernate.dialect.MySQLDialect 
</property> 
<property name="show_sql">true</property> 
<mapping 
resource="HibernateExample/src/HibernateExposed/Resource/Person.hbm.xml"/> 
</session-factory> 
</hibernate-configuration> 

です:マッピング(RESOURCE)が見つかりません。

Iは

<mapping 
resource="Resource/Person.hbm.xml"/> 

以下のようにマッピングを交換しようとしたともhibernate.config.xmlと同じ位置にマッピングXMLを維持しようとしました。

<mapping 
resource="Person.hbm.xml"/> 

上記のいずれのケースでも、コードで私のPerson.hbm.xmlを見つけることができます。

マイフォルダ構造は、私はStackOverflowの上でこのエラーの他のすべての答えを見たが

enter image description here

以下のように見えるこの問題を解決するアプローチのどれも。どんな助けも高く評価されます。また、詳細レベルにこれをさらにデバッグする方法はありますか?

答えて

2

srcフォルダのルートにhibernate.cfg.xmlと入力してください。

そしてClassLoader.getResourceAsStream(resourcePath)resourcePathを使用して、すべてのこれらのファイル

<mapping resource="HibernateExposed/Person.hbm.xml"/> 

Hibernateの負荷を使用するには - でbinbuildフォルダのルートにあるファイルへのアクセスを取得しようとするClassLoaderファイル

へのパスです。 IDE、またはjarのルート、またはWebアプリケーションのルートのwar/WEB-INF/classes/。それらはすべてクラスパスのルートです。

binは、Eclipseがファイルをコンパイルするフォルダです。 srcフォルダのルートはbinフォルダのルートにコンパイルされます。それを確認することができます。 bin/hibernate.cfg.xmlconfigure("xxx/hibernate.cfg.xml") - - 例

configure("hibernate.cfg.xml")について

bin/xxx/hibernate.cfg.xml

<mapping resource="HibernateExposed/Person.hbm.xml"/> 

bin/HibernateExposed/Person.hbm.xml

パスがClassLoader/ための主要ななしでなければならない対応します。 Hibernateは先頭の/を削除しようとします。

このようなパスが有効で、あまりにも

<mapping resource="/HibernateExposed/Person.hbm.xml"/> 

更新

あなたがルートにそれを持ってしたくない場合は、 hibernate.cfg.xmlへのパスを指定することができます

new Configuration().configure("HibernateExposed/hibernate.cfg.xml")

ご利用の場合

new Configuration().configure()

これは、クラスパスのルートにある必要があります。

+0

srcフォルダにhibernate.cfg.xmlを置くと、エラーが発生します。org.hibernate.internal.util.config.ConfigurationException:cfg.xmlリソースを見つけることができませんでした。とにかく、hibernate.cfg.xmlはクラスパスのルートに存在するはずですか?私の場合、クラス(Person)はHibernateExposed(package)で作成されるので、その場所は問題ではありません。私が間違っているなら、私を訂正してください。 – rahulv21

+0

configure(hibernate.cfg.xml)に変更を加えたところ、それは機能しました。私はこの問題に直面して、ほぼ6時間ほど続いています。 explainationありがとう! – rahulv21

+0

@ bestrahul21私は更新します。ビルドフォルダを確認してください。時にはEclipseはそれをクリーンアップしません。あなたはメニューからクリーンを選択する必要があります。 –

関連する問題