Hi,
First, let me appologize for a long post. The problem I am hitting requires a bit of explanation.
The problematic collection is the SelectedProvisionClass.SelectedProvisions
When I load SelectedProvisionClass directly using an id the collection loads fine:
(notice the provisions count in the last line of output)
Code:
SelectedProvisionClassId id =new SelectedProvisionClassId(new Long(9), new Long(40));
SelectedProvisionClass clazz=(SelectedProvisionClass) session.load(SelectedProvisionClass.class, id);
con.println("selected class: "+clazz.getProvisionClass().getName()+" id: "+clazz.getId().getContainerId()+","+clazz.getId().getProvisionClassId());
con.println("provisions count: "+clazz.getSelectedProvisions().size());
Hibernate: select selectedpr0_.spc_id as spc1_0_, selectedpr0_.provision_class_id as provision2_0_, selectedpr0_.provision_class_id as provision2_3_0_ from tbl_selected_provision_class selectedpr0_ where selectedpr0_.spc_id=? and selectedpr0_.provision_class_id=?
Hibernate: select provisionc0_.id as id0_, provisionc0_.name as name1_0_ from tbl_provision_class provisionc0_ where provisionc0_.id=?
*****selected class: Provis-Maverick id: 9,40
Hibernate: select selectedpr0_.spc_id as spc1___, selectedpr0_.provision_class_id as provision3___, selectedpr0_.provision_id as provision2___, selectedpr0_.spc_id as spc1_0_, selectedpr0_.provision_id as provision2_0_, selectedpr0_.provision_class_id as provision3_0_, selectedpr0_.provision_id as provision2_2_0_, selectedpr0_.spc_id as spc1_2_0_, selectedpr0_.provision_class_id as provision3_2_0_ from tbl_selected_provision selectedpr0_ where selectedpr0_.spc_id=? and selectedpr0_.provision_class_id=?
Hibernate: select provision0_.id as id0_, provision0_.description as descript2_0_0_, provision0_.provision_class_id as provision3_0_0_ from tbl_provision provision0_ where provision0_.id=?
Hibernate: select provision0_.id as id0_, provision0_.description as descript2_0_0_, provision0_.provision_class_id as provision3_0_0_ from tbl_provision provision0_ where provision0_.id=?
*****provisions count: 2
BUT when i load the class through the SelectedProvisionsContainer the collection
DOES NOT load:
(notice the provisions count is 0 instead of 2 at the last line of output)
Code:
SelectedProvisionsContainer container=(SelectedProvisionsContainer)
session.load(SelectedProvisionsContainer.class, new Long(9));
con.println("there are: "+container.getClasses().size()+" classes in the container");
SelectedProvisionClass clazz=(SelectedProvisionClass) container.getClasses().toArray()[0];
con.println("selected class: "+clazz.getProvisionClass().getName()+" id: "+clazz.getId().getContainerId()+","+clazz.getId().getProvisionClassId());
con.println("provisions count: "+clazz.getSelectedProvisions().size());
Hibernate: select selectedpr0_.spc_id as spc1_0_ from tbl_selected_provisions_container selectedpr0_ where selectedpr0_.spc_id=?
Hibernate: select classes0_.spc_id as spc1___, classes0_.provision_class_id as provision2___, classes0_.spc_id as spc1_0_, classes0_.provision_class_id as provision2_0_, classes0_.provision_class_id as provision2_3_0_ from tbl_selected_provision_class classes0_ where classes0_.spc_id=?
Hibernate: select provisionc0_.id as id0_, provisionc0_.name as name1_0_ from tbl_provision_class provisionc0_ where provisionc0_.id=?
Hibernate: select provisionc0_.id as id0_, provisionc0_.name as name1_0_ from tbl_provision_class provisionc0_ where provisionc0_.id=?
Hibernate: select provisions0_.spc_id as spc1___, provisions0_.provision_id as provision2___, provisions0_.provision_class_id as provision3___, provisions0_.spc_id as spc1_0_, provisions0_.provision_id as provision2_0_, provisions0_.provision_class_id as provision3_0_, provisions0_.provision_id as provision2_2_0_, provisions0_.spc_id as spc1_2_0_, provisions0_.provision_class_id as provision3_2_0_ from tbl_selected_provision provisions0_ where provisions0_.spc_id=?
Hibernate: select provision0_.id as id0_, provision0_.description as descript2_0_0_, provision0_.provision_class_id as provision3_0_0_ from tbl_provision provision0_ where provision0_.id=?
Hibernate: select provision0_.id as id0_, provision0_.description as descript2_0_0_, provision0_.provision_class_id as provision3_0_0_ from tbl_provision provision0_ where provision0_.id=?
there are: 3 classes in the container
*****selected class: Provis-Maverick id: 9,40
*****provisions count: 0
Also notice that SelectedProvisionsContainer.SelectedProvisions collection is loading even though i never access it when i load the SelectedProvisionsContainer class.
Any help is greatly appreciated, I've been stuck on this for a few days and its probably something totally obvious and I need another pair of eyes to point it out.
The mappings follow...
Thanks!
Here is the schema I am working with:
Hibernate version: 3.0.2
Mapping documents:
<class name="SelectedProvisionsContainer">
<id column="spc_id" name="id">
<generator class="native"/>
</id>
<set cascade="save-update" inverse="true" name="classes">
<key> <column name="spc_id"/> </key>
<one-to-many class="SelectedProvisionClass"/>
</set>
<set cascade="save-update" inverse="true" name="provisions">
<key> <column name="spc_id"/> </key>
<one-to-many class="SelectedProvision"/>
</set>
</class>
<class name="SelectedProvisionClass">
<composite-id class="SelectedProvisionClassId" name="id" unsaved-value="any">
<key-property column="spc_id" name="containerId"/>
<key-property column="provision_class_id" name="provisionClassId"/>
</composite-id>
<set cascade="none" inverse="true" name="selectedProvisions">
<key>
<column name="spc_id" not-null="true"/>
<column name="provision_class_id" not-null="true"/>
</key>
<one-to-many class="SelectedProvision"/>
</set>
<many-to-one column="provision_class_id" insert="false"
name="provisionClass" update="false"/>
</class>
<class name="SelectedProvision">
<composite-id class="SelectedProvisionId" name="id" unsaved-value="any">
<key-property column="spc_id" name="containerId"/>
<key-property column="provision_id" name="provisionId"/>
<key-property column="provision_class_id" name="provisionClassId"/>
</composite-id>
<many-to-one column="provision_id" insert="false" name="provision" update="false"/>
<many-to-one insert="false" update="false" name="selectedProvisionClass">
<column name="spc_id"/>
<column name="provision_class_id"/>
</many-to-one>
</class>
Code between sessionFactory.openSession() and session.close():
see above
Full stack trace of any exception that occurs:
Name and version of the database you are using:
ms sql server 2000
The generated SQL (show_sql=true):
see above
Debug level Hibernate log excerpt: