1

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
4

2 に答える 2

3
<mapping resource="dir/B.hbm.xml"/>
于 2009-03-05T21:51:16.647 に答える