0

I am trying to map a composite key with a many to one relationship.

How to map a class A which own a composite id of 4 elements and a class B which own a composite id of 3 elements to realize a joint between these class both with the constraint:

A(*) <--> (1)B ?

<hibernate-mapping>
    <class name="A" table="A_TABLE" lazy="true">
        <composite-id>
            <key-property name="prop1" column="PROP1" type="string" />
            <key-property name="prop2" column="PROP2" type="long" />
            <key-property name="prop3" column="PROP3" type="long" />
            <key-property name="prop4" column="PROP4" type="integer" />
        </composite-id>
        <property name="prop10" type="string" column="PROP10" />
        ...
    </class>

    <class name="B" table="B_TABLE" lazy="false">
        <composite-id>
            <key-property name="prop1" column="PROP1" type="string" />
            <key-property name="prop2" column="PROP2" type="long" />
            <key-property name="prop3" column="PROP3" type="long" />
         </composite-id>
         <property name="prop20" type="string" column="PROP20" />
         ...
    </class>
</hibernate-mapping>
Luca Putzu
  • 1,438
  • 18
  • 24
polo
  • 1
  • 1

1 Answers1

2

Lets say i have 3 class - Other , Foo and Bar. you can create many to one as following

<class name="Other" table="OTHER">
  <composite-id>
    <key-property name="id1"/> 
    <key-property name="id3"/> 
  </composite-id>
  <property name="text"/>
</class>

<class name="Foo" table="FOO">
  <composite-id>
    <key-property name="id1"/> 
    <key-property name="id2"/> 
  </composite-id>
  <property name="text"/>
</class>


<class name="Bar" table="BAR">
  <id name="id">
    <generator class="increment" />
  </id>

  <many-to-one name="foo" class="Foo" update="false" insert="false">
    <column name="FOO_ID1" />
    <column name="FOO_ID2" />
  </many-to-one>
  <many-to-one name="other" class="Other" update="false" insert="false">
    <column name="FOO_ID1" />
    <column name="FOO_ID3" />
  </many-to-one>

  <property name="text"/>
</class>
backtrack
  • 7,996
  • 5
  • 52
  • 99