У меня есть несколько * .hbm.xml файлов, которые находятся в одной папке в файле hibernate.cfg.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
и затем я попытался добавить в свою схему expoert, как предложил Марк. Тогда он даже не найдет мой "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. И по какой-то глупой причине я подумал, что следующие совершенно разные сообщения об ошибках означают одно и то же ... Большое спасибо Марку за напоминание о том, что люди пишут сообщения об ошибках по уважительной причине! Добавление fileset
по-прежнему не работает, но теперь я знаю, что читать сообщения об ошибках ... Я уверен, что скоро это исправлю. =. = ''
Schema text failed: resource: B.hbm.xml not found
Schema text failed: Could not parse mapping document from resource dir/B.hbm.xml