Hello,
I'm trying to map a one-to-many relation of a Property (WxpPropData) that contains a set of Attributes (WxpPropAttributeData). 
The DB schema was forced on me. Both tables have Composite-ID. The relation is mapped on a primary key - Attribute's PK consists Property's PK plus attributeId.
The problem is in retrieving data from the DB (see detailed code below):
1. When I use session.get() method to retrieve a Property - it's attributes are not retrieved.
2. I've found a workaround - When I use HQL query to retrieve a Property - it is retrieved with it's attributes - it works fine!
3. Saving a Property with session.save() does save both a property and it's attributes - works fine!
What I have already tried:
1. Changing lazy attribute to "false" doesn't help.
2. I checked with LogDriver what SQL statements are generated by Hibernate (with values) and invoked them manually. They are correct. First result contains a Property and the second one contains all it's Attributes. Up to this point everything seems fine.
Best Regards,
urulooke
Hibernate version: 
Code:
Hibernate version 3.1.3. 
(Hibernate version 3.2.1 GA also tried - same results)
Mapping documents:Code:
    <class name="WxpPropData" table="HBI_AUFTRITT_EIGS">
        <composite-id name="pk" class="WxpPropPk">
            <key-property name="auftritt" column="AUFTRITT" type="string" />
            <key-property name="release" column="AUFTRITT_VERS" type="long" />
            <key-property name="propertyId" column="AUFTRITT_ID" type="string" />
            <key-property name="projectId" column="PRJK_ID" type="string" />
        </composite-id>
        <property name="type">
            <column name="EIGS_TYP" sql-type="varchar(255)" />
        </property>
        <set name="attributes" cascade="all" inverse="true" lazy="true">
            <key>
                <column name="AUFTRITT" />
                <column name="AUFTRITT_VERS" />
                <column name="AUFTRITT_ID" />
                <column name="PRJK_ID" />
            </key>
            <one-to-many class="WxpPropAttributeData" />
        </set>
    </class>
Code:
    <class name="WxpPropAttributeData" table="HBI_AUFTRITT_EIGS_ATTR">
        <composite-id name="pk" class="WxpPropAttributePk">
            <key-property name="propertyId" column="AUFTRITT_ID" type="string" />
            <key-property name="auftritt" column="AUFTRITT" type="string" />
            <key-property name="release" column="AUFTRITT_VERS" type="long" />
            <key-property name="projectId" column="PRJK_ID" type="string" />
            <key-property name="attributeId" column="ATTR_NAME" type="string" />
        </composite-id>
        <property name="value">
            <column name="ATTR_WERT" sql-type="varchar(2048)" />
        </property>        
    </class>
Code between sessionFactory.openSession() and session.close():This part of code retrieves a property, but the attributes set is empty:
Code:
WxpPropData wxpPropData = (WxpPropData) se.get( WxpPropData.class, 
   new WxpPropPk( auftritt, release, projectId, id ) );
Iterator it = wxpPropData.getAttributes().iterator();
This part of code retrieves a property along with its attributes:
Code:
String hqlQuery = "select wxp from WxpPropData as wxp" +
   " where wxp.pk.auftritt = :auftritt" +
   " and wxp.pk.release = :release" +
   " and wxp.pk.propertyId = :propertyId" +
   " and wxp.pk.projectId = :projectId";
List wxpProperties = se.createQuery(hqlQuery)
   .setString( "auftritt", auftritt )
   .setLong( "release", release )
   .setString( "propertyId", id )
   .setString( "projectId", projectId )
   .list();
WxpPropData wxpPropData = (WxpPropData) wxpProperties.get(0);
Full stack trace of any exception that occurs:No exceptions.
Name and version of the database you are using:IBM DB2 v8.1.12.99
The generated SQL (show_sql=true):Code:
 Hibernate: select wxppropdat0_.AUFTRITT as AUFTRITT10_1_, wxppropdat0_.AUFTRITT_VERS as AUFTRITT2_10_1_, wxppropdat0_.AUFTRITT_ID as AUFTRITT3_10_1_, wxppropdat0_.PRJK_ID as PRJK4_10_1_, wxppropdat0_.EIGS_TYP as EIGS5_10_1_, attributes1_.AUFTRITT as AUFTRITT3_, attributes1_.AUFTRITT_VERS as AUFTRITT3_3_, attributes1_.AUFTRITT_ID as AUFTRITT1_3_, attributes1_.PRJK_ID as PRJK4_3_, attributes1_.ATTR_NAME as ATTR5_3_, attributes1_.AUFTRITT_ID as AUFTRITT1_9_0_, attributes1_.AUFTRITT as AUFTRITT9_0_, attributes1_.AUFTRITT_VERS as AUFTRITT3_9_0_, attributes1_.PRJK_ID as PRJK4_9_0_, attributes1_.ATTR_NAME as ATTR5_9_0_, attributes1_.ATTR_WERT as ATTR6_9_0_ from S422.HBI_AUFTRITT_EIGS wxppropdat0_ left outer join S422.HBI_AUFTRITT_EIGS_ATTR attributes1_ on wxppropdat0_.AUFTRITT=attributes1_.AUFTRITT and wxppropdat0_.AUFTRITT_VERS=attributes1_.AUFTRITT_VERS and wxppropdat0_.AUFTRITT_ID=attributes1_.AUFTRITT_ID and wxppropdat0_.PRJK_ID=attributes1_.PRJK_ID where wxppropdat0_.AUFTRITT=? and wxppropdat0_.AUFTRITT_VERS=? and wxppropdat0_.AUFTRITT_ID=? and wxppropdat0_.PRJK_ID=?
Code:
 Hibernate: select attributes0_.AUFTRITT as AUFTRITT1_, attributes0_.AUFTRITT_VERS as AUFTRITT3_1_, attributes0_.AUFTRITT_ID as AUFTRITT1_1_, attributes0_.PRJK_ID as PRJK4_1_, attributes0_.ATTR_NAME as ATTR5_1_, attributes0_.AUFTRITT_ID as AUFTRITT1_9_0_, attributes0_.AUFTRITT as AUFTRITT9_0_, attributes0_.AUFTRITT_VERS as AUFTRITT3_9_0_, attributes0_.PRJK_ID as PRJK4_9_0_, attributes0_.ATTR_NAME as ATTR5_9_0_, attributes0_.ATTR_WERT as ATTR6_9_0_ from S422.HBI_AUFTRITT_EIGS_ATTR attributes0_ where attributes0_.AUFTRITT=? and attributes0_.AUFTRITT_VERS=? and attributes0_.AUFTRITT_ID=? and attributes0_.PRJK_ID=?