Вопрос о Fk refrence в Коллекции - PullRequest
0 голосов
/ 07 июня 2010

у меня есть 2 объекта: (персона) и (адрес)

с последующим отображением:

 <class name="Adress" table="Adress" lazy="false">
   <id name="Id" column="Id">
    <generator class="native" />
   </id>
   <many-to-one name="Person" class="Person">
     <column name="PersonId" />
    </many-to-one>
 </class>

 <class name="Person" table="Person" lazy="false">
   <id name="PersonId" column="PersonId">
     <generator class="native" />
   </id>
   <property name="Name" column="Name" type="String" not-null="true" />
   <set name="Adresses" lazy="true" inverse="true" cascade="save-update">
     <key>
       <column name="PersonId" />
     </key>
     <one-to-many class="Adress" />
    </set>
  </class>

Моя проблема в том, что когда я устанавливаю Adrees.Person с новым объектом person, Коллекция person. Адреса не обновляются.

если я обновлю каждую конечную роль ассоциации, которая будет обновлена ​​в два, оба?

еще одна вещь: если я обновил Fk вручную, как это: Adress.PersonId это не нарушает и не меняет ассоциацию. это Nhibernte поведение?

заранее спасибо, жду ваших впечатлений

1 Ответ

0 голосов
/ 17 июня 2010

человек. Адреса не будут обновляться сами по себе.Вы должны сделать это следующим образом:

address.setPerson(person);
person.getAddresses().add(address);

В качестве альтернативы, поскольку Person.Addresses помечены в вашем примере с обратным = "true", вы можете выполнить только

address.setPerson(person);

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

Эта статья (http://simoes.org/docs/hibernate-2.1/155.html) очень хорошо описывает атрибут «обратный»). Статья предназначена для Hibernate, а не NHibernate, но я считаю, что это не имеет значенияздесь.

...