You have speicfied that an ItemDefinition's primary key has 4 columns:
Code:
<key-property name="seriesName" column="SER_ID_R"></key-property>
<key-property name="effectiveDate" column="EFCT_D" ></key-property>
<key-property name="districtCode" column="DIST_C"></key-property>
<key-property name="itemCode" column="ITM_ID_C"></key-property>
But you're looking it up using only three columns from in the set:
Code:
<set name="items" lazy="false">
<key unique="true" >
<column name="ser_id_r" ></column>
<column name="efct_d"></column>
<column name="dist_c"></column>
</key>
<one-to-many class="ItemDefinition" />
</set>
You need to match up the columns better (using property-ref). Obviously the key in the set doesn't map exactly to the primary key (after all, it'd be a one-to-one if it did that). The easiest thing to do is to set up a <properties> tag in your ItemDefinition mapping, then refer to it using property-ref in the <key> element of the <set> element in SeriesDefinition.