1

我们有一个从 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

4

1 回答 1

0

在您真正需要它们之前,您不能只注释掉映射吗?hibernate 需要提供的实体的完整元模型,不能只为其中一些实体创建“存根”

于 2009-04-02T19:20:26.830 回答