hibernate.cfg.xml ファイルの同じフォルダーにいくつかの *.hbm.xml ファイルが配置されています。ここで、このフォルダーのサブフォルダーにある他の *.hbm.xml ファイルをマップしたいと思います。どうすればできますか?ありがとう!
これが私の一部ですhibernate.cfg.xml
:
<hibernate-configuration>
<session-factory name="MySessionFactory">
<!-- some hibernate properties here -->
<!--This below works fine-->
<mapping resource="A.hbm.xml"/>
<!--This doesn't-->
<mapping resource="/dir/B.hbm.xml"/>
</session-factory>
</hibernate-configuration>
これは私のAntファイルの一部です:
<target name="generateHibernateSql">
<taskdef name="SchemaExportTask"
classname="org.hibernate.tool.hbm2ddl.SchemaExportTask"
>
<classpath>
<pathelement location="${build.classes.main.dir}"/>
<pathelement location="${base.configuration.hibernate.dir}"/>
<path refid="build.classpath.lib"/>
</classpath>
</taskdef>
ここに私のフォルダ構造があります
${base.configuration.hibernate.dir}
| hibernate.cfg.xml
| A.hbm.xml
|--dir
|---| B.hbm.xml
${build.classes.main.dir}
[編集]
モーリスが提案したように、私は最初に試して失敗しました。行を次のように変更しました
<mapping resource="dir/B.hbm.xml"/>
それでも同じエラーが発生します:
Schema text failed: Could not parse mapping document from resource dir/B.hbm.xml
そして、Mark が提案したように、自分の schemaexpoert に追加してみました。その後、私の「A.hbm.xml」も見つかりません。エラーを出す:
Schema text failed: Could not parse mapping document from resource A.hbm.xml
私の SchemaExportTask は次のようになります。
<SchemaExportTask
config="${base.configuration.hibernate.dir}\hibernate.cfg.xml"
quiet="no"
text="no"
drop="no"
delimiter=";"
create="yes"
output="${dist.database.dir}\schema-export.sql"
>
<fileset dir="${base.configuration.hibernate.dir}">
<include name="**/*.hbm.xml"/>
</fileset>
</SchemaExportTask>
【解決済み】
結論は、私は本当に愚かだったということです。別のディレクトリにいることとは何の関係もありませんでした。テスト段階で一度に 2 つのことを変更していたので混乱し、それをすべて無害な「ディレクトリの変更」のせいにしました。みんなの時間を無駄にしてごめんなさい。
誰かが興味を持っているなら、ここに何が起こったのか. ローカル DTD ファイルを使用して XSLT 変換を行い、ローカル DTD ファイルを相対パスで XSL ファイルに指定しました。しかし、生成された hbm.xml ファイルを別のディレクトリに配置しました。そのため、SchemaExportTask は DTD ファイルを見つけることができず、新しい hbm.xml ファイルの解析に失敗しました。そして、なんらかのばかげた理由で、次のまったく異なるエラー メッセージが同じことを意味していると思いました....人々が正当な理由でエラー メッセージを書いたことを思い出させてくれた Mark に感謝します! 追加fileset
は今でも機能しませんが、エラーメッセージを読むことはわかっています...すぐに修正すると確信しています。=.=''
Schema text failed: resource: B.hbm.xml not found
Schema text failed: Could not parse mapping document from resource dir/B.hbm.xml