Hi,
I'm having a problem with a collection of composite-elements that I've defined. They don't seem to be saving properly. My mapping is as follows:
Code:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="OzoneHR.Domain"
namespace="OzoneHR.Domain.Questionnaires">
<class name="QuestionTemplate" table="QuestionTemplate">
<id name="Id" access="nosetter.camelcase-underscore"
column="QuestionTemplateID" type="Int32">
<generator class="identity" />
</id>
<property name="QuestionText" column="QuestionText" type="String" not-null="true" access="nosetter.camelcase-underscore" />
<bag name="SubDomains"
table="QuestionTemplateInSubdomain"
cascade="all"
access="nosetter.camelcase-underscore"
>
<key column="QuestionTemplateID" />
<composite-element class="QuestionnaireSubdomain">
<property name="SubdomainName" access="nosetter.camelcase-underscore" column="Subdomain" not-null="true" />
</composite-element>
</bag>
<bag name="Domains"
table="QuestionTemplateInDomain"
cascade="all"
access="nosetter.camelcase-underscore"
>
<key column="QuestionTemplateID" />
<composite-element class="QuestionnaireDomain">
<property name="DomainName" access="nosetter.camelcase-underscore" column="Domain" not-null="true" />
</composite-element>
</bag>
</class>
</hibernate-mapping>
Neither the Subdomains or Domains collections are being persisted as expected.
There is a slight caveat there, in that in my test of this code, if I explicitly call Commit on the current transaction, the cascading inserts are generated, but if I don't only the insert for the parent object is generated. E.g:
Code:
QuestionTemplate template = new QuestionTemplate(templateText, subdomain, domain);
sessManager.OpenSession().Transaction.Begin();
IRepository<QuestionTemplate, int> repository = IoC.Resolve<IRepository<QuestionTemplate, int>>();
repository.Save(template);
This code only generates a commit for the parent QuestionTemplate object. By adding:
Code:
sessManager.OpenSession().Transaction.Commit()
the additional child commits are generated.
Anyone have any ideas?
Thanks,
Matt