首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NHibernate集合映射引发“无法加载或初始化对象或集合”

NHibernate集合映射引发“无法加载或初始化对象或集合”
EN

Stack Overflow用户
提问于 2009-07-16 10:10:47
回答 1查看 7.8K关注 0票数 1

我有以下映射:

代码语言:javascript
复制
<bag name="BList" table="A_TABLE" inverse="true" lazy="false" cascade="all-delete-orphan">
  <key column="A_ID"/>
  <one-to-many
     class="B, Model" />
</bag>

代码语言:javascript
复制
<many-to-one name="A"
             class="A, Model"
             column="A_ID"
             not-null="true" />

执行insert和updates可以很好地工作(在集合中添加和删除时),但是获取对象总是导致抛出异常。

代码语言:javascript
复制
failed: NHibernate.Exceptions.GenericADOException : could not load an entity: [Model.B#5816932][SQL: SELECT ...]
  ----> System.NullReferenceException : Object reference not set to an instance of an object.

或者..。

代码语言:javascript
复制
NHibernate.Exceptions.GenericADOException : could not initialize a collection: [Model.A.BList#1364389][SQL: ...]
  ----> System.NullReferenceException : Object reference not set to an instance of an object.

..。这取决于您要获取的对象。我确信我在这里遗漏了一个简单的东西,因为在我实现cascade="all-delete-orphan“之前,它曾经是有效的。

任何帮助都会得到极大的重视。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-07-17 09:16:14

事实证明,映射本身是正确的。问题发生在%1个对象的构造函数中...

我有一个默认的无参数构造函数,它是对另一个构造函数的重载。

代码语言:javascript
复制
public B() : this(null) { }

然后,另一个构造器的代码类似于

代码语言:javascript
复制
public B(A c)
{
    A= c;
}

无论哪种方式,删除构造函数上的重载都会使我的所有测试都通过:D

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1136633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档