hibernate可以组件全局吗?其他实体共享?

时间:2016-08-03 13:36:22

标签: hibernate hibernate-mapping

我是hibernate的新手(有c背景),在阅读一些书籍和示例时,我总是看到嵌入在类映射中的组件。例如

<hibernate-mapping>
    <class name="com.mkyong.customer.Customer" table="customer">
        <!-other entity mapping -->
        <component name="Address" class="com.mkyong.customer.Address">
            <property name="address1" type="string">
                <column name="ADDRESS1" not-null="true" />
            </property>
            <property name="address2" type="string">
                <column name="ADDRESS2" not-null="true" />
            </property>

        </component>
        .
        .
    </class>
</hibernate-mapping>

我的问题是,可以将组件设为全局并由任何实体共享吗?像@embeddable JPA annotation

我指的是示例:http://www.mkyong.com/hibernate/hibernate-component-mapping-example/

1 个答案:

答案 0 :(得分:0)

将组件放在自己的xml文件中。只有这样的组件:

<component name="Address" class="com.mkyong.customer.Address">
        <property name="address1" type="string">
            <column name="ADDRESS1" not-null="true" />
        </property>
        <property name="address2" type="string">
            <column name="ADDRESS2" not-null="true" />
        </property>

</component>

然后,只要您想重用此组件,只需使用以下行:

<xi:include href="your-component.xml" />

请务必在xml的顶部添加此内容,以便能够使用xi标记:

xmlns:xi="w3.org/2001/XInclude"

或者将它全部放在一行中:

<xi:include href="your-component.xml" xmlns:xi="w3.org/2001/XInclude"/>