2010-06-07 69 views
0

FK refrence我有2个实体:(人)&(地址)问题关于在收集

与follwing映射:

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

我propblem是当我设置Adrees.Person与 人的新对象,收集person.Adresses不更新自己。

我是否应该更新 两者中更新的关联的每个结束角色?

另一件事:如果我手动更新Fk,如下所示: Adress.PersonId它不会中断或更改关联。这是否是 Nhibernte行为?

在此先感谢,我等着你的experiencies

回答

0

的person.Addresses本身不会被更新。你应该做的是这样的:

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

另外,因为Person.Addresses被标记在你的榜样逆=“真”,你可以只执行

address.setPerson(person); 

然后刷新会话并获得来自数据库的同一个人。它的地址集合应该用新地址更新。

这篇文章(http://simoes.org/docs/hibernate-2.1/155.html)很好地描述了'inverse'属性。这篇文章适用于Hibernate,而不是NHibernate,但我相信这里没关系。