Unidirectional many-to-many insert using dynamic session in NHibernate

17 views
Skip to first unread message

Antonio Cannata

unread,
Jan 5, 2012, 10:22:45 AM1/5/12
to nhusers
Hi all.

I've the "AnagraficaBase" hbm file:

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class entity-name="AnagraficaBase" table="anagrafica">
<id name="ID" type="int" >
<column name="ID" not-null="true" />
<generator class="identity" />
</id>
<property name="Email" type="string" >
<column name="Email" sql-type="varchar(255)" not-null="true" />
</property>
<one-to-one cascade="all" class="NetCms.Users.User" property-
ref="AnagraficaMapped" name="User" />
<joined-subclass entity-name="Anagraficaprova"
table="anagrafica_prova" >
<key>
<column name="id_anagrafica_prova" />
</key>
<property name="data di nascita" type="DateTime">
<column name="data_di_nascita" sql-type="DateTime" not-
null="true" />
</property>
<property name="nome" type="string">
<column name="nome" sql-type="varchar(25)" not-null="true" />
</property>
<property name="dropdown test" type="string">
<column name="dropdown_test" sql-type="varchar(255)" not-
null="true" />
</property>
<bag name="profilo"
table="anagrafica_prova_custom_field_checkboxlist_values"
cascade="all" fetch="select">
<key>
<column name="IDanagrafica_prova" not-null="true" />
</key>
<many-to-many entity-name="CustomCheckboxListValue">
<column name="IDcustom_field_checkboxlist_value" not-
null="true" />
</many-to-many>
</bag>
</joined-subclass>
</class>
</hibernate-mapping>

I want to create an "Anagraficaprova" object with dynamic session
(EntityMode.Map). As you can see, I've a unidirectional many to many
relation between "Anagraficaprova" and "CustomCheckboxListValue".

So, when I do:

ISession mapSession = sess.GetSession(EntityMode.Map);

List<IDictionary> profiles = new List<IDictionary>();
Hashtable profilo1 = (Hashtable)
mapSession.get("CustomCheckboxListValue",1);
profiles.add(profilo1);

Hashtable anagraficaProva = new Hashtable();
anagraficaProva.add("Email","test");
anagraficaProva.add("data di nascita", "08/10/1982");
anagraficaProva.add("nome","pippo");
anagraficaProva.add("dropdown test","1");

anagraficaProva.add("profilo", profiles);

mapSession.SaveOrUpdate("Anagraficaprova", anagraficaProva);

The anagraficaProva object is correctly saved, but the record in
"anagrafica_prova_custom_field_checkboxlist_values" table (the couple:
IDanagrafica_prova,IDcustom_field_checkboxlist_value) is not inserted.

Where is the problem?

Thank you...
Reply all
Reply to author
Forward
0 new messages