Just in case another newbie is running into the same problems, here is how the mappings should have looked like from the beginning...
;-)
Code:
<hibernate-mapping schema="dbo" package="de.vodafone.rnp.core.business.persistence.hibernate">
<class name="CellImpl" table="funzel" proxy="CellImpl" lazy="true">
<composite-id>
<key-property name="workspaceId" type="integer" column="arb_lfdnr"/>
<key-property name="versionId" type="integer" column="ver_nr"/>
<key-property name="regionId" type="character" column="nls_id"/>
<key-property name="cellCompoundCode" type="string" column="sta_id"/>
<key-property name="siteId" type="character" column="sta_loc"/>
<key-property name="alternativeId" type="integer" column="alt_nr"/>
<key-property name="radioSystemId" type="integer" column="fan_lfdnr"/>
<key-property name="id" type="character" column="zel_id"/>
</composite-id>
<property name="networkSystemLabel" type="character" column="zel_freq_band"/>
<property name="tlossCorrection" type="double" column="zel_korr_t_loss"/>
<property name="cableLength" type="integer" column="zel_kabel_lg"/>
<property name="pilotPower" type="double" column="zel_power_bcch"/>
<set name="cellgroups" table="vsto_funzgm" lazy="true">
<key>
<column name="arb_lfdnr_2"/>
<column name="ver_nr_2"/>
<column name="nls_id"/>
<column name="sta_id"/>
<column name="sta_loc"/>
<column name="alt_nr"/>
<column name="fan_lfdnr"/>
<column name="zel_id"/>
</key>
<many-to-many class="CellGroupImpl">
<column name="arb_lfdnr_1"/>
<column name="ver_nr_1"/>
<column name="zgr_id"/>
</many-to-many>
</set>
</class>
</hibernate-mapping>
Code:
<hibernate-mapping schema="dbo" package="de.vodafone.rnp.core.business.persistence.hibernate">
<class name="CellGroupImpl" table="funzgr" proxy="CellGroupImpl" lazy="true">
<composite-id>
<key-property name="workspaceId" type="integer" column="arb_lfdnr"/>
<key-property name="versionId" type="integer" column="ver_nr"/>
<key-property name="name" type="string" column="zgr_id"/>
</composite-id>
<set name="cells" table="vsto_funzgm" lazy="true" inverse="true">
<key>
<column name="arb_lfdnr_1"/>
<column name="ver_nr_1"/>
<column name="zgr_id"/>
</key>
<many-to-many class="CellImpl">
<column name="arb_lfdnr_2"/>
<column name="ver_nr_2"/>
<column name="nls_id"/>
<column name="sta_id"/>
<column name="sta_loc"/>
<column name="alt_nr"/>
<column name="fan_lfdnr"/>
<column name="zel_id"/>
</many-to-many>
</set>
<many-to-one name="version" class="VersionImpl" insert="false" update="false">
<column name="arb_lfdnr"/>
<column name="ver_nr"/>
</many-to-one>
</class>
</hibernate-mapping>