2010-01-06 50 views
6

我所有的NH实体都来自一个名为BusinessEntity的类型,它的 有最基本的ID值,Created,CreatedBy,Updated,UpdatedBy。NHibernate异常集合[..User.Groups]没有被flush()处理()

CreatedBy/UpdatedBy需要用户

我有一个IPreUpdateEventListener和IPreInsertEventListener火灾 获取的审计值当前日期时间。同样在这里,我有 我的逻辑来获取当前用户运行,我通过运行 条件查询针对Windows用户原则来抓取。从我 所有岗位上的NH用户群的理解,对这个问题我的用户类需要 被即时加载这个在我的事件侦听 正常工作,这是我如何加载用户

public User GetByDomainPrinciple(string domainPrinciple) 
{ 
    var domainPrincipleCriteria = DetachedCriteria.For<User>() 
     .Add(Restrictions.Eq("DomainPrinciple", domainPrinciple)) 
     .SetFetchMode("Roles", FetchMode.Eager) 
     .SetFetchMode("Groups", FetchMode.Eager) 
     .SetFetchMode("Groups.Roles", FetchMode.Eager) 
     .SetCacheable(true); 

    return Repository.QuerySingle(domainPrincipleCriteria); 
} 

Repository.QuerySingle(domainPrincipleCriteria);只是

return detachedCriteria 
.GetExecutableCriteria(_conversation.Session).UniqueResult<T>(); 

我错过了什么或是我的标准查询错误?我想绝对 最坏的情况下,我可以改变CreatedBy是一个Guid而不是一个 用户,只是手动分配FK那样,但这看起来很脏 脏。

回答

1

我认为这可能对你有所帮助。该错误源自PreUpdateEventListener。我在回来的时候遇到了同样的问题。

http://ayende.com/Blog/archive/2009/04/29/nhibernate-ipreupdateeventlistener-amp-ipreinserteventlistener.aspx

+1

除非我错过了有用的评论这是没有什么帮助,这是我得到了我的事件监听器的代码,除了我从事件监听器NH来获取用户而不是只是像他的例子一样使用窗口原理。 – 2010-01-08 17:14:47

+0

我想如果你正在加载任何东西,它会给你这个错误。我试图在NH用户组以及其他人一起回答这个问题,但没有答案。 http://groups.google.com/group/nhusers/browse_thread/thread/1db7fd843b0b4b56/cdaa52f93e94e167?hl=en&lnk=gst&q=epitka#cdaa52f93e94e167。对不起,我没有更多的帮助。 – epitka 2010-01-08 17:26:35

+0

这不是很有用,所以我很惊讶它被标记为解决方案。 – 2011-09-19 09:21:18