hibernate - NHibernate.MappingException : No persister

标签 hibernate nhibernate orm fluent-nhibernate fluent-nhibernate-mapping

我在使用无状态 session 进行更新时遇到问题,我
想知道是否有人见过这样的东西。 (NHibernate 3.1)。

我基本上是在做以下事情:

SomeEntity e = statelessSession.Get<SomeEntity>(id); 
e.SomeProperty = "a new value"; 
statelessSession.Update(e); 

我收到以下错误:
NHibernate.MappingException: No persister for: 
  Castle.Proxies.SomeEntityProxy 
  at NHibernate.Impl.SessionFactoryImpl.GetEntityPersister(String 
  entityName) 
  at NHibernate.Impl.StatelessSessionImpl.GetEntityPersister(String 
  entityName, Object obj) 
  at NHibernate.Impl.StatelessSessionImpl.Update(String entityName, 
  Object entity) 
  at NHibernate.Impl.StatelessSessionImpl.Update(Object entity) 

映射——
class SomeEntityMap : ClassMap<SomeEntity>
{
    public SomeEntityMap()
    {           
        Table("Some_Entity");            
        Id(x => x.ID).Column("ID");         
        Map(x => x.Name).Column("NAME");
    }

我已经进入调试器,可以看到
statelessSession.Get(id) 返回给我一个代理。这是
正确的?

有人知道有什么问题吗?请分享您的看法和建议。

最佳答案

正如您在问题中概述的那样,我做了一个测试项目,但无法重现该问题。我能够重现错误的唯一场景是:

  • 初始化 session 工厂时未指定映射的位置,即您丢失了
    Fluently.Configure()
      .Mappings(m => m.FluentMappings.AddFromAssemblyOf<SomeEntity>());
    
  • SomeEntity的属性之一已被标记为 lazy="no-proxy" .更多信息可咨询here .
  • 关于hibernate - NHibernate.MappingException : No persister,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15309369/

    相关文章:

    python - 如何在按属性分组时查询对象集合

    java - hibernate SQL 异常 java.lang.StringIndexOutOfBoundsException : String index out of range

    hibernate - Grails - 不要为某些请求路径打开 hibernate session

    NHibernate 延迟加载行为

    NHIbernate QueryOver分离条件和Any子句

    nhibernate - 在HQL上使用最小值,最大值和计数

    javascript - extjs 中的级联组合框

    java - 多对多自引用hibernate注释(带有两个实体)

    php - Doctrine 2 多对多级联

    python - SQLAlchemy:排除从查询的子查询中获取的行