【问题标题】:Getting Error: Object reference not set to instance of an object in Hibernate出现错误:对象引用未设置为 Hibernate 中的对象实例
【发布时间】:2012-11-13 14:40:11
【问题描述】:

您好,我有两个映射:

Ansprechpartner-映射文件:

<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-映射文件:

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


         ......
}

它们是一对一的关系。

我尝试使用:room.Etage.Gebaeude.Ansprechpartner.AnsprechPartnerName 获取值“AnsprechPartnerName”

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

这是为什么呢?我在这方面做错了什么。我的其他映射工作完美。

谁能帮忙?

【问题讨论】:

标签: hibernate nhibernate nhibernate-mapping hibernate-mapping


【解决方案1】:

这个错误仅仅意味着你试图访问一个为空的对象的属性。这并不意味着您的映射有问题,我们没有理由根据您提供的数据认为映射是问题。

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

room 不是 null

room.Etage 不是null

room.Etage.Gebaeude 不是null

如果其中一个没有设置,如果数据确实存在,请检查您的数据库。只有这样,您才能假设问题出在您的映射上。

【讨论】:

  • 房间不为空,room.etage 不为空,room.etage.gebaeude 不为空。我瘦 Ansprechpartner.Ansprechpartnername 为空。但我不知道为什么,因为数据库中有价值7
猜你喜欢
  • 2014-06-04
  • 2011-07-09
  • 2012-08-31
  • 2011-11-21
  • 2012-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多