wolli wrote:
What kind of exception do you get ? If it's a SQL server exception, you it's not a hibernate problem. If it's a hibernate exception try adding not-found="ignore" to the many-to-one to company. But, I think it's only used for select and not for insert/update.
Can you post the mapping file ?
Can you insert records with a null manually ?
The exception comes from SQL Server :
NHibernate: INSERT INTO Employees (DepNum, Name, Nif, EnterDate, ExitDate, Email, EState, Id_FamType, Id_Company) VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8); select SCOPE_IDENTITY(); @p0 = '1', @p1 = 'func1', @p2 = '123123123', @p3 = '10-02-2009 00:00:00', @p4 = '', @p5 = '', @p6 = '1', @p7 = '11', @p8 = ''
A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in NHibernate.dll
A first chance exception of type 'NHibernate.Exceptions.GenericADOException' occurred in NHibernate.dll
Employee.hbm.xml file :
Code:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Save.Domain.Employee, Save" table="Employees" lazy="false">
<id name="Id" unsaved-value="-1">
<generator class="native"/>
</id>
<property name="DepNum" not-null="true" />
<property name="Name" not-null="true" />
<property name="Nif" not-null="true" unique="true" type="long"/>
<property name="EnterDate" not-null="true" />
<property name="ExitDate" not-null="false"/>
<property name="Email" not-null="false" />
<property name="EState" not-null="true" type="Save.Domain.State, Save" lazy="false"/>
<many-to-one name="FamType" not-null="true" class="Save.Domain.FamilyType, Save" column="Id_FamType" lazy="false"/>
<many-to-one name="Company" class="Save.Domain.BaseCompany, Save" lazy="false" not-null="false" column="Id_Company" />
</class>
</hibernate-mapping>
BaseCompany.hbm.xml :
Code:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Save.Domain.BaseCompany, Save" table="Companies" lazy="false" >
<id name="Id" column="Id_Company" unsaved-value="-1" >
<generator class="native" />
</id>
<discriminator column="COMPANY_TYPE" type="string" />
<property name="Name" not-null="true" unique="true" column="CmpName"/>
<property name="ShortName" not-null="true" column="ShName"/>
<property name="NIPC" not-null="true" unique="true" column="NIPC"/>
<property name="State" not-null="true" type="Save.Domain.State, Save" />
<many-to-one name="Business" class="Save.Domain.BusinessField, Save" not-null="true" column="Id_BusinessField" lazy="false"/>
<bag name="Employees">
<key column="Id" not-null="false" />
<one-to-many class="Save.Domain.Employee, Save" />
</bag>
<subclass name="Save.Domain.GroupCompany, Save" discriminator-value="GROUP">
<bag name="ChildCompanies" cascade="none" inverse="true" lazy="false">
<key column="Id_Parent_Company"/>
<one-to-many class="Save.Domain.Company, Save"/>
</bag>
</subclass>
<subclass name="Save.Domain.Company, Save" discriminator-value="COMPANY">
<many-to-one name="ParentCompany" class="Save.Domain.GroupCompany, Save" column="Id_Parent_Company" lazy="false"/>
<bag name="ChildCompanies">
<key column="Id_Parent_Company"/>
<one-to-many class="Save.Domain.RCCompany, Save"/>
</bag>
</subclass>
<subclass name="Save.Domain.RCCompany, Save" discriminator-value="RC">
<many-to-one name="ParentCompany" class="Save.Domain.Company, Save" column="Id_Parent_Company" lazy="false"/>
</subclass>
</class>
</hibernate-mapping>
Yes, I executed the following comand and it worked :
Code:
INSERT INTO Companies(COMPANY_TYPE, CmpName, ShName, NIPC,State, Id_BusinessField, Id_Parent_Company) VALUES('Company','Empresa 01', 'EM 01', 123123123, 1, 3, NULL);