У меня есть файлы * .hbm.xml, которые находятся в той же папке в файле hibernate.cfg.xml. Теперь я хочу сопоставить другие файлы * .hbm.xml, которые находятся в подпапке этой папки. Как я могу это сделать? Благодаря!Hibernate: Как скопировать файл * .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}
[Edit]
я впервые попробовал и не удалось, как предложил Морис изменил строку
<mapping resource="dir/B.hbm.xml"/>
все еще дает ту же ошибку:
Schema text failed: Could not parse mapping document from resource dir/B.hbm.xml
, а затем я пошел, чтобы попытаться добавляя в мой 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>
[Решено]
Вывод в том, что я был просто очень глупо. Это не имело никакого отношения к тому, чтобы быть в другом каталоге. Я запутался, потому что я менял две вещи сразу на этапе тестирования, а затем я обвинял все это в невинном «изменении каталога». Извините за то, что тратишь время всех.
Если кому-то интересно, вот что произошло. Я сделал некоторый перевод XSLT с использованием локального файла DTD и указал локальный файл 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
Можете вы добавить сообщения об ошибках, которые вы получили? – Mark