使用复合键和非主要属性的Hibernate一对一映射

时间:2010-12-23 19:34:32

标签: hibernate composite-key one-to-one

所以这是我的问题。我有这两张表自己映射的表。我删除了一些其他字段,因为它们无关紧要。我需要Item和ItemAdminScrtyGrp之间的一对一映射,用于项目的所有者。我已经包含了用于获取项目所有者的SQL。无法更改数据库架构。任何想法如何组合映射的复合键和非主要属性的部分?

Hibernate Mapping

<hibernate-mapping>
<class name="Item">
    <composite-id class="ItemKey" name="itemKey" >
        <key-property name="itemId" column="ITEM_ID" />
        <key-property name="revision" column="RVSN_ID" />
    </composite-id>
</class>
<class name="ItemAdminScrtyGrp">
    <composite-id name="key" class="ItemAdminScrtyGrpKey" >
        <key-property name="securityProfileCode" column="SCRTY_PROF_CD" />
        <key-property name="itemId" column="ITEM_ID" />
        <key-property name="revision" column="RVSN_ID" />
    </composite-id>
    <property name="securityLevelCode" column="SCRTY_LVL_TYP_CD" />
    <property name="ownerFlag" column="OWNR_FLG"/>
</class>
</hibernate-mapping>

SQL

select SCRTY_PROF_CD from ItemAdminScrtyGrp grp
join Item 
on grp.ITEM_ID = Item.ITEM_ID and 
   grp.RVSN_ID = Item.RVSN_ID and 
   grp.OWNR_FLG = 'y'
where Item.ITEM_ID = 'abc' and Item.RVSN_ID = '123';

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

这种映射似乎存在缺陷。看到 见https://hibernate.atlassian.net/browse/HHH-4939