Frage

Ich habe einige * .hbm.xml Dateien, die im selben Ordner auf der hibernate.cfg.xml Datei platziert werden. Nun, ich möchte einige andere * .hbm.xml Dateien zuzuordnen, die sich in einem Unterordner dieses Ordners sind. Wie könnte ich es tun? Dank!

Hier ist ein Teil meiner 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>

Dies ist ein Teil meiner Ant-Datei:

        <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>

hier ist meine Ordnerstruktur

${base.configuration.hibernate.dir}
   | hibernate.cfg.xml
   | A.hbm.xml
   |--dir
   |---| B.hbm.xml
${build.classes.main.dir}


[Bearbeiten]

Ich habe zuerst versucht und sind gescheitert, wie Maurice vorgeschlagen, geändert, um die Linie zu

 <mapping resource="dir/B.hbm.xml"/>

gibt immer noch den gleichen Fehler:

Schema text failed: Could not parse mapping document from resource dir/B.hbm.xml

und dann ging ich auf das Hinzufügen in mein schemaexpoert zu versuchen, so Mark vorgeschlagen. Es wäre dann nicht einmal mehr meinen „A.hbm.xml“ finden. Geben Sie den Fehler:

Schema text failed: Could not parse mapping document from resource A.hbm.xml

Meine SchemaExportTask nun wie folgt aussieht:

        <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>


[gelöst]

Die Schlussfolgerung ist, dass ich gerade wirklich dumm war. Es hatte nichts zu tun mit in einem anderen Verzeichnis zu sein. Ich habe verwirrt, weil ich auf einmal Testphase zwei Dinge zu ändern und dann habe ich sie alle auf den Unschuldigen „Verzeichnis ändern“ verantwortlich gemacht. Es tut uns jeder Zeit zu verschwenden.

Wenn jemand interessiert ist, war hier, was passiert ist. Ich habe einige XSLT-Übersetzung eine lokale DTD-Datei, und spezifiziert die lokale DTD-Datei mit einem relativen Pfad in meiner XSL-Datei. Aber ich habe die generierten hbm.xml-Dateien in einem Verzeichnis Unterschied - daher SchemaExportTask kann nicht die DTD-Datei nicht mehr finden und es versäumt, die neuen hbm.xml Dateien zu analysieren. Und aus irgendeinem dummen Grund, dachte ich, die folgenden ganz andere Fehlermeldungen, die gleiche Sache gemeint .... Vielen Dank an Mark für mich daran erinnert, dass die Menschen schrieb Fehlermeldungen für einen guten Grund! Hinzufügen fileset noch nicht jetzt funktioniert, aber ich weiß jetzt Fehler meassages zu lesen ... Ich bin sicher, dass ich es bald beheben werde. =. = ''

Schema text failed: resource: B.hbm.xml not found
Schema text failed: Could not parse mapping document from resource dir/B.hbm.xml
War es hilfreich?

Lösung

Für allgemeine Hibernate Nutzung stimme ich ändern Maurice vorgeschlagen, aber dachte, dass ich eher eine Erklärung geben würde. Hibernate Mapping-Dateien werden als Ressourcen aus dem Classpath geladen. Wie Sie $ {base.configuration.hibernate.dir} auf Ihrem Classpath haben müssen Sie den Pfad der Zuordnungsdatei in Bezug auf diese daher vorne geben / sollten entfernt werden.

Für die Verwendung des Schemas Export-Tool von ant der docs sagen, dass Sie die Mapping-Dateien als Dateigruppe definieren sollten anstatt erwarten, dass sie auf dem classpath gefunden werden. Siehe

Andere Tipps

<mapping resource="dir/B.hbm.xml"/>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top