【发布时间】:2009-03-05 21:43:08
【问题描述】:
我有一些 *.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
然后我继续尝试按照 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>
[已解决]
结论是我真的很愚蠢。它与在不同的目录中无关。我很困惑,因为我在测试阶段一次更改了两件事,然后我将这一切归咎于无辜的“目录更改”。很抱歉浪费了大家的时间。
如果有人感兴趣,这就是发生的事情。我使用本地 DTD 文件进行了一些 XSLT 转换,并在我的 XSL 文件中使用相对路径指定了本地 DTD 文件。但是我将生成的 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
【问题讨论】:
-
可以添加收到的错误信息吗?
标签: hibernate nhibernate-mapping schemaexport hibernate.cfg.xml