在nhibernate中使用-element映射一组属性时,我遇到了一些问题。
<class name="PlannedSalesInYear"
table="tblPlannedSalesInYear"
lazy="false" >
<id name="_businessId"
column="BusinessId"
access="field">
<generator class="assigned" />
</id>
<properties name="UIDX_PSPerVehicleAndYear"
optimistic-lock="true"
insert="true"
update="true"
unique="true">
<property name="_year"
access="field"
column="Year"/>
<many-to-one name="_vehicle"
access="field"
fetch="select"
column="VehicleId"
foreign-key="FK_VehicleOfPlannedSalesInYear"/>
</properties>
<property name="_plannedSales"
not-null="false"
access="field"
column="PlannedSales"/>
这看起来像是保存工作,但是当加载vehicle属性为null,且year属性为0时。
当更改映射并避免-Tag时,它可以工作。不幸的是,在这种情况下,唯一索引不能像预期的那样工作(Sqlite)。
已更改映射:
<class name="PlannedSalesInYear"
table="tblPlannedSalesInYear"
lazy="false" >
<id name="_businessId"
column="BusinessId"
access="field">
<generator class="assigned" />
</id>
<property name="_plannedSales"
not-null="false"
access="field"
column="PlannedSales"
/>
<property name="_year"
access="field"
unique-key="UIDX_PSPerVehicleAndYear"
column="Year"/>
<many-to-one name="_vehicle"
access="field"
fetch="select"
column="VehicleId"
unique-key="UIDX_PSPerVehicleAndYear"
foreign-key="FK_VehicleOfPlannedSalesInYear"/>
有人知道为什么加载不起作用吗?或者想知道为什么在第二个映射中创建唯一索引是错误的?
发布于 2012-08-02 22:49:10
我遇到了和你一样的问题,当我发现你使用唯一键的例子后,我找到了一个解决方案。
当您在hbm文件中定义属性时,还要添加列的定义。
<property name="Year">
<column name=Year sql-type="int" not-null="true" unique-key="UC_MY" />
</property>
<property name="Month">
<column name=Month sql-type="tinyint" not-null="true" unique-key="UC_MY" />
</property>至少当你有两个简单的属性时,这是有效的,但我想值得一试,看看它是否也适用于多对一属性。
https://stackoverflow.com/questions/9665727
复制相似问题