I have 3 tables - *Role, SecurityItem and RoleSecurityItemPermission*
<class name="*Role*" table="Role" lazy="true" >
<cache usage="nonstrict-read-write"/>
<id name="Id">
<generator class="hilo">
<param name="table">hibernate_unique_key</param>
<param name="column">NextHi</param>
<param name="where">TableName='Role'</param>
<param name="max_lo">100</param>
</generator>
</id>
<property name="Name">
<column name="Name" sql-type="nvarchar" not-null="true" />
</property>
<property name="Description">
<column name="Description" sql-type="nvarchar" not-null="false" />
</property>
<bag name="RoleSecurityItemPermissions" generic="true" inverse="true"
cascade="all" lazy="true">
<key column="Role" />
<one-to-many class="RoleSecurityItemPermission" />
</bag>
</class>
<class name="*SecurityItem*" table="SecurityItem" lazy="true">
<cache usage="nonstrict-read-write"/>
<id name="Id">
<generator class="hilo">
<param name="table">hibernate_unique_key</param>
<param name="column">NextHi</param>
<param name="where">TableName='SecurityItem'</param>
<param name="max_lo">100</param>
</generator>
</id>
<property name="Name">
<column name="Name" sql-type="nvarchar" not-null="true" />
</property>
<bag name="RoleSecurityItemPermissions" generic="true" inverse="true"
cascade="delete">
<key column="SecurityItem" />
<one-to-many class="RoleSecurityItemPermission" />
</bag>
</class>
<class name="*RoleSecurityItemPermission*" table="*
RoleSecurityItemPermissions*" lazy="true" dynamic-insert="true">
<cache usage="nonstrict-read-write"/>
* <composite-id name="RoleSecurityIdentifier"
class="RoleSecurityIdentifier">*
* <key-property name="RoleId" column="Role" type="Int32" />*
* <key-property name="SecurityItemId" column="SecurityItem"
type="Int32" />*
* </composite-id>*
<many-to-one name="Role" insert="false" update="false" cascade="none" >
<column name="Role" />
</many-to-one>
<many-to-one name="SecurityItem" insert="false" update="false"
cascade="none">
<column name="SecurityItem" />
</many-to-one>
<property name="AllowCreate">
<column name="AllowCreate" sql-type="bit" not-null="true" />
</property>
<property name="AllowRead">
<column name="AllowRead" sql-type="bit" not-null="true" />
</property>
<property name="AllowUpdate">
<column name="AllowUpdate" sql-type="bit" not-null="true" />
</property>
<property name="AllowDelete">
<column name="AllowDelete" sql-type="bit" not-null="true" />
</property>
</class>
My requirement for persisting the above are as follows
[Test]
public void TestCreateRoleSecurityItemPermission()
{
1 ISecurityItemDao securityItemDaoObject = new SecurityItemDao();
2 SecurityItem securityItem = new SecurityItem();
3 securityItem.Name = "Workspace" + DateTime.Now.Millisecond;
4 securityItemDaoObject.Add(securityItem); // This works fine
5 IRoleDao roleDaoObject = new RoleDao();
6 Role role = new Role();
7 role.Name = "Administrator_" + 1;
8 role.Description = "Chief Administrator";
9 //roleDaoObject.Add(role);
10 RoleSecurityItemPermission roleSecurityItemPermission = new
RoleSecurityItemPermission();
11 roleSecurityItemPermission.Role = role;
12 roleSecurityItemPermission.SecurityItem = securityItem;
13 roleSecurityItemPermission.RoleSecurityIdentifier.RoleId =
role.Id;
14 roleSecurityItemPermission.RoleSecurityIdentifier.SecurityItemId
= securityItem.Id;
15 role.RoleSecurityItemPermissions.Add(roleSecurityItemPermission);
16 //IRoleSecurityItemPermissionDao
roleSecurityItemPermissionDaoObject = new RoleSecurityItemPermissionDao();
17
//roleSecurityItemPermissionDaoObject.Add(roleSecurityItemPermission);
18 roleDaoObject.Add(role); //Fails to set the role.Id in line 13
// If I uncomment line number 9, 16 &17 and comment line 18 then
everything works fine but I want to cascade insert using only one
session.Save call
}
public Add(GuruRole role)
{
...........
transaction = session.BeginTransaction();
session.Save(role); // generates the id for role but is unable to
set the role.id in the
roleSecurityItemPermission.RoleSecurityIdentifier.RoleId
transaction.Commit();
............
}
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/nhusers/-/VWstlrfoo7oJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=en.