2012-03-12 1 views
1

Я столкнулся с проблемами при сопоставлении группы свойств с -element в nhibernate.NHibernate <properties>

<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"/> 

Кажется, что экономия работает, но при загрузке свойства автомобиля является недействительным и год свойство равно 0.

При изменении отображения и избежать -tag он работает. К сожалению, в этом случае уникальный индекс не работает как expeceted (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"/> 

ли кто-то есть идея, почему загрузка не работает? Или идея, почему создание уникального индекса является ошибкой со вторым отображением?

ответ

2

У меня была такая же проблема, как и вы, и после того, как я нашел ваш пример использования уникального ключа, я смог найти решение.

Когда вы определяете свои свойства в файле 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> 

По крайней мере, работает, когда у вас есть два простых свойства, но я думаю, его стоит попробовать, чтобы проверить, работает ли он со свойствами многих однозначным тоже.