Hibernate - 如何将主键映射为三个对象的复合键

时间:2018-03-07 08:58:55

标签: hibernate mapping

我正在尝试映射一个对象。它有一个主键作为三个ID的复合键,但它们在三个不同的对象中:Role,SecApplication,SecFunction。我搜索了有关如何从对象进行映射的信息,但我没有发现任何相关信息。如果它对任何事情都有帮助,我会把我正在尝试的代码放在一边:

<composite-key>
        <key-many-to-one name="role" class="Role.id" >
            <column name="id_perfil"/>
        </key-many-to-one>
        <key-many-to-one name="secApplication" class="SecApplication.id">
            <column name="id_aplicacion"/>
        </key-many-to-one>
        <key-many-to-one name="secFunction" class="SecFunction.id">
            <column name="id_funcion"/>
        </key-many-to-one>
    </composite-key>

产生以下错误:

Caused by: org.xml.sax.SAXParseException; lineNumber: 675; columnNumber: 18; cvc-complex-type.2.4.a: Invalid content was found starting with element 'composite-key'.

我想知道做这个或任何解释它的网站的正确方法是什么。

1 个答案:

答案 0 :(得分:0)

解决了:我知道了!这是正确的形式,但我有两个错误,我已将<composite-key>更改为<composite-id>,我已删除了“class”中的ID并且它有效。

<composite-id>
    <key-many-to-one name="role" class="Role" >
        <column name="id_perfil"/>
    </key-many-to-one>
    <key-many-to-one name="secApplication" class="SecApplication">
        <column name="id_aplicacion"/>
    </key-many-to-one>
    <key-many-to-one name="secFunction" class="SecFunction">
        <column name="id_funcion"/>
    </key-many-to-one>
</composite-id>