You can use a composite-element as a collection value. This is explained in the doc, and there are various options. One possibility is the following:
Code:
<set name="relatedPartiesTo" lazy="true" inverse="true" table="PARTY_RELATIONSHIP">
<key column="PARTY_ID_FROM"/>
<composite-element class="it.esselunga.ecommerce.data.model.PartyRelationship">
<property name="fromDate" column="FROM_DATE" type="java.sql.Timestamp" />
<property name="throughDate" column="THRU_DATE" type="java.sql.Timestamp" />
<property name="description" column="DESCRIPTION" type="java.lang.String" length="100" />
<many-to-one name="relationshipType" class="it.esselunga.ecommerce.data.model.PartyRelationshipType">
<column name="RELATIONSHIP_TYPE_ID"/>
</many-to-one>
<many-to-one name="relatedParty" class="it.esselunga.ecommerce.data.model.Party" column="PARTY_ID_TO"/>
</composite-element>
</set>