Ich habe einige * .hbm.xml-Dateien, die in demselben Ordner in der Datei hibernate.cfg.xml abgelegt sind. Nun möchte ich einige andere * .hbm.xml-Dateien zuordnen, die sich in einem Unterordner dieses Ordners befinden. Wie könnte ich es tun? Vielen Dank!Hibernate: Wie eine * .hbm.xml-Datei in einem anderen Ordner zuordnen?
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>
Dieser Teil meiner Ant-Datei ist:
<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 zum ersten Mal versucht habe und 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, um zu versuchen Hinzufügen zu meinem Schemaexpoert, wie Mark vorgeschlagen hat. Dann würde ich meine "A.hbm.xml" nicht mehr finden. Geben Sie den Fehler:
Schema text failed: Could not parse mapping document from resource A.hbm.xml
Mein SchemaExportTask sieht nun wie:
<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 damit zu tun, in einem anderen Verzeichnis zu sein. Ich war verwirrt, weil ich zwei Dinge auf einmal änderte und dann die Schuld auf den unschuldigen "Verzeichniswechsel" warf. Entschuldigung, dass wir alle Zeit verschwenden.
Wenn jemand interessiert ist, war hier was passiert ist. Ich habe eine XSLT-Übersetzung mit einer lokalen DTD-Datei durchgeführt und die lokale DTD-Datei mit einem relativen Pfad in meiner XSL-Datei angegeben. Aber ich habe die generierten hbm.xml-Dateien in ein Differenzverzeichnis geschrieben - daher kann SchemaExportTask die DTD-Datei nicht mehr finden und konnte die neuen hbm.xml-Dateien nicht analysieren. Und aus irgendeinem dummen Grund dachte ich, die folgenden völlig unterschiedlichen Fehlermeldungen bedeuteten dasselbe ... Vielen Dank an Mark, dass er mich daran erinnert hat, dass Leute aus gutem Grund Fehlermeldungen geschrieben haben! Das Hinzufügen von fileset
funktioniert immer noch nicht, aber ich weiß jetzt, dass ich Fehlermeldungen gelesen habe ... Ich bin mir 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
Können Sie eine Fehlermeldung hinzufügen, die Sie erhalten haben? – Mark