我们有一个从 hbm 映射文件创建的现有和工作数据库。
我们想为可选功能创建一些新表。
一种选择是这些新表始终存在,但我们希望表和 POJO 仅在请求时创建。
我的问题是这些表/POJO 依赖于现有的表/POJO。我已经创建了一个映射文件,但只有当它为现有表和新表以及它们的 POJO 创建创建/删除命令时,我才能让它工作。
我可以避免这个现有的表/POJO for Group 出现在创建脚本中吗?
在下面的示例中,Group 是一个现有的表/POJO。
<id name="id" type="java.lang.Long">
<column name="ID" not-null="true" />
</id>
<many-to-one name="group"
class="uk.co.foo.domain.dfwv.Group"
foreign-key="GROUP_FK" lazy="false" not-found="ignore">
<meta attribute="use-in-tostring">false</meta>
<column name="GROUP_NAME"
not-null="true" />
</many-to-one>
</class>
生成它的 ant 目标如下,并且仅在列出依赖对象时才有效:
<fileset dir="${dfwv.mappings.dir}">
<include name="**/groups.hbm.xml" />
</fileset>
</configuration>
<hbmtemplate exporterclass="uk.co.foo.hibernateutils.tools.Exporter" templateprefix="config/foopojo/" template="config/foopojo/Pojo.ftl">
<property key="jdk5" value="true" />
<property key="ejb3" value="false" />
</hbmtemplate>
</hibernatetool>
</target>
如果没有对 Group 的依赖引用,我会收到错误消息:
构建失败 C:\projects\foo\db-build.xml:187:架构文本失败:来自表 DISCON_TEST 的关联引用了未映射的类:uk.co.foo.domain.dfwv.Group
休眠版本:3.1.2