如何在hibernate中正确映射两个表

时间:2012-11-13 21:46:28

标签: hibernate nhibernate nhibernate-mapping

我有两个映射文件。建立和ContactPerson。每个Buildung都有一个ContactPerson。所以我做了一对一的关系

在建筑物中我有“Meetingplace”列,而在Contact i中有“Meetingplace”和“ContactpersonName”列

在联系中我将联系人分配给会议地点。

例如:Building in Meeting是德国。现在联系我为Meetingplace德国分配联系人。

联系人:

这是我的Mappingfiles

    <class name="Book.Doa.Contact" table="Contact">
<id name="ID">
  <generator class="foreign">
    <param name="property">Parent</param>
  </generator>
</id>

<property name="Contact" length="20" column="Contactperson"/>
<property name="Meeting" length="20" column="Meetingplace"/>

<one-to-one name="Parent"
        class="Book.Doa.Building" constrained="true"/>

大厦:

 <class name="Book.Doa.Building">
    <id name="ID">
        <generator class="native">
            <param name="sequence">GLOBALSEQUENCE</param>
        </generator>
    </id>


    <property name="Standort" column="Meetingplace" />

  <one-to-one name="Partner" lazy="false" cascade="all" fetch="join" outer-join="true"
   class="BookIt.Domain.Contact, BookIt.Core"  />

</class>

我的问题是,iam geeting也是错误:

Object reference not set to instance of an object

如果我使用room.Building.Partner.Contact来获取Building in Meetingplace in Building。

数据库中有值,所以我不知道为什么会出现这个错误。我做错了什么? 问题是如何在Bulding中获得Meetingplace的ContactPerson?

请帮忙!

1 个答案:

答案 0 :(得分:0)

尝试lazy = true,如下所示,它可能有效,因为我遇到了同样类型的问题并且有效。

  <one-to-one name="Partner" lazy="true" cascade="all" fetch="join" outer-join="true"
   class="BookIt.Domain.Contact, BookIt.Core"  />

如果解决方案不起作用,请打开show_sql并告诉我们lazy = false和lazy = true的结果