获取错误:对象引用未设置为Hibernate中对象的实例

时间:2012-11-13 14:40:12

标签: hibernate nhibernate nhibernate-mapping hibernate-mapping

您好我有两个映射:

Ansprechpartner-Mappingfile:

<class name="Book.Doa.Ansprechpartner, Book.Co" table="ANSPRECHPARTNER">
<id name="ID">
  <generator class="foreign">
    <param name="property">Parent</param>
  </generator>
</id>

<property name="AnsprechPartnerName" length="20" column="PARTNER"/>
<property name="KonfStandort" length="20" column="KONFERENZSTANDORT"/>

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

Ansprechparter.CS:

public class Ansprechpartner : DomainObject<long>
{
    public virtual string AnsprechPartnerName { get; set; }
    public virtual string KonfStandort { get; set; }
    public virtual Gebaeude Parent { get; set; }

    public Ansprechpartner()
    {
    }
    public Ansprechpartner(

        string ansprechpartnername,
        string konfstandort,
        Gebaeude parent
        )
    {
        AnsprechPartnerName = ansprechpartnername;
        KonfStandort = konfstandort;
        Parent = parent;
    }
}

Gebaeude-Mappingfile:

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

    <property name="Bezeichnung" not-null="true" length="64" />
    <property name="Standort" column="Konfstandort" />

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

</class>

Gebaeude.CS:

     public class Gebaeude : DomainObject<long>
    {

        public virtual string Bezeichnung { get; set; }
        public virtual string Adresse { get; set; }
        public virtual Stadt Stadt { get; set; }
        public virtual string Plz { get; set; }
        //Konferenzstandort ggf. unten noch hinzufügen.
        public virtual string KonfStandort { get; set; }

        public virtual Ansprechpartner Partner { get; set; }


         ......
}

他们有一对一的关系。

我尝试获取值“AnsprechPartnerName with:room.Etage.Gebaeude.Ansprechpartner.AnsprechPartnerName

但我总是收到错误:Object reference not set to instance of an object

为什么?在那一部分我做错了什么。我的其他映射工作正常。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

此错误仅表示您尝试访问null为的对象的属性。这并不意味着您的映射存在问题,我们没有理由认为映射是基于您提供的数据的问题。

使用调试器并中断您提到的表达式(room.Etage.Gebaeude.Ansprechpartner.AnsprechPartnerName)并检查是否已设置每个属性。

room不是null吗?

room.Etage不是null吗?

room.Etage.Gebaeude不是null吗?

如果未设置其中一个,请检查数据库中是否存在实际数据。只有这样你才能认为问题与你的映射有关。