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.

Reply via email to