今天,测试一个项目的时候,抛出了这个莫名其妙的异常,然后就开始了一天的调试之旅...
花了很长时间,没有从代码找出任何问题...
那么到底哪里出问题呢?
根据下面那段长长的错误日志:
-- ::, [] XxxXxxxx.Web.Mvc.Controllers.WarningController - UnhandleError guest /master/poitem
NHibernate.Exceptions.GenericADOException: could not load an entity: [XxxXxxxx.Model.Format#][SQL: /* load XxxXxxxx.Model.Format */ SELECT format0_.id as id1_4_0_, format0_.nh_version as nh2_4_0_, format0_.category_id as catego3_4_0_, format0_.name as name4_4_0_, format0_.display_name as displa5_4_0_, format0_.path as path6_4_0_, format0_.preview_image as previe7_4_0_, format0_.code as code8_4_0_, format0_.type as type9_4_0_, format0_.created_id as creat10_4_0_, format0_.created_time as creat11_4_0_, format0_.modified_id as modif12_4_0_, format0_.modified_time as modif13_4_0_ FROM wp_format format0_ WHERE format0_.id=?] ---> System.InvalidCastException: Can't convert infinite timestamp values to DateTime
在 Npgsql.NpgsqlDataReader.GetValue(Int32 ordinal)
在 Npgsql.NpgsqlDataReader.get_Item(Int32 ordinal)
在 NHibernate.Driver.NHybridDataReader.System.Data.IDataRecord.get_Item(Int32 i)
在 NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String name)
在 NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String[] names, ISessionImplementor session, Object owner)
在 NHibernate.Type.AbstractType.Hydrate(IDataReader rs, String[] names, ISessionImplementor session, Object owner)
在 NHibernate.Persister.Entity.AbstractEntityPersister.Hydrate(IDataReader rs, Object id, Object obj, ILoadable rootLoadable, String[][] suffixedPropertyColumns, Boolean allProperties, ISessionImplementor session)
在 NHibernate.Loader.Loader.LoadFromResultSet(IDataReader rs, Int32 i, Object obj, String instanceClass, EntityKey key, String rowIdAlias, LockMode lockMode, ILoadable rootPersister, ISessionImplementor session)
在 NHibernate.Loader.Loader.InstanceNotYetLoaded(IDataReader dr, Int32 i, ILoadable persister, EntityKey key, LockMode lockMode, String rowIdAlias, EntityKey optionalObjectKey, Object optionalObject, IList hydratedObjects, ISessionImplementor session)
在 NHibernate.Loader.Loader.GetRow(IDataReader rs, ILoadable[] persisters, EntityKey[] keys, Object optionalObject, EntityKey optionalObjectKey, LockMode[] lockModes, IList hydratedObjects, ISessionImplementor session)
在 NHibernate.Loader.Loader.GetRowFromResultSet(IDataReader resultSet, ISessionImplementor session, QueryParameters queryParameters, LockMode[] lockModeArray, EntityKey optionalObjectKey, IList hydratedObjects, EntityKey[] keys, Boolean returnProxies, IResultTransformer forcedResultTransformer)
在 NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies, IResultTransformer forcedResultTransformer)
在 NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies, IResultTransformer forcedResultTransformer)
在 NHibernate.Loader.Loader.LoadEntity(ISessionImplementor session, Object id, IType identifierType, Object optionalObject, String optionalEntityName, Object optionalIdentifier, IEntityPersister persister)
--- 内部异常堆栈跟踪的结尾 ---
在 NHibernate.Loader.Loader.LoadEntity(ISessionImplementor session, Object id, IType identifierType, Object optionalObject, String optionalEntityName, Object optionalIdentifier, IEntityPersister persister)
在 NHibernate.Loader.Entity.AbstractEntityLoader.Load(ISessionImplementor session, Object id, Object optionalObject, Object optionalId)
在 NHibernate.Loader.Entity.AbstractEntityLoader.Load(Object id, Object optionalObject, ISessionImplementor session)
在 NHibernate.Persister.Entity.AbstractEntityPersister.Load(Object id, Object optionalObject, LockMode lockMode, ISessionImplementor session)
在 NHibernate.Event.Default.DefaultLoadEventListener.LoadFromDatasource(LoadEvent event, IEntityPersister persister, EntityKey keyToLoad, LoadType options)
在 NHibernate.Event.Default.DefaultLoadEventListener.DoLoad(LoadEvent event, IEntityPersister persister, EntityKey keyToLoad, LoadType options)
在 NHibernate.Event.Default.DefaultLoadEventListener.Load(LoadEvent event, IEntityPersister persister, EntityKey keyToLoad, LoadType options)
在 NHibernate.Event.Default.DefaultLoadEventListener.ProxyOrLoad(LoadEvent event, IEntityPersister persister, EntityKey keyToLoad, LoadType options)
在 NHibernate.Event.Default.DefaultLoadEventListener.OnLoad(LoadEvent event, LoadType loadType)
在 NHibernate.Impl.SessionImpl.FireLoad(LoadEvent event, LoadType loadType)
在 NHibernate.Impl.SessionImpl.InternalLoad(String entityName, Object id, Boolean eager, Boolean isNullable)
在 NHibernate.Type.EntityType.ResolveIdentifier(Object id, ISessionImplementor session)
在 NHibernate.Type.EntityType.ResolveIdentifier(Object value, ISessionImplementor session, Object owner)
在 NHibernate.Engine.TwoPhaseLoad.InitializeEntity(Object entity, Boolean readOnly, ISessionImplementor session, PreLoadEvent preLoadEvent, PostLoadEvent postLoadEvent)
在 NHibernate.Loader.Loader.InitializeEntitiesAndCollections(IList hydratedObjects, Object resultSetId, ISessionImplementor session, Boolean readOnly)
在 NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies, IResultTransformer forcedResultTransformer)
在 NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies, IResultTransformer forcedResultTransformer)
在 NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters, IResultTransformer forcedResultTransformer)
在 NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters)
在 NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet` querySpaces, IType[] resultTypes)
在 NHibernate.Loader.Hql.QueryLoader.List(ISessionImplementor session, QueryParameters queryParameters)
在 NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.List(ISessionImplementor session, QueryParameters queryParameters)
在 NHibernate.Engine.Query.HQLQueryPlan.PerformList(QueryParameters queryParameters, ISessionImplementor session, IList results)
在 NHibernate.Impl.SessionImpl.List(IQueryExpression queryExpression, QueryParameters queryParameters, IList results)
在 NHibernate.Impl.AbstractSessionImpl.List(IQueryExpression queryExpression, QueryParameters parameters)
在 NHibernate.Impl.AbstractQueryImpl2.List()
在 NHibernate.Linq.DefaultQueryProvider.ExecuteQuery(NhLinqExpression nhLinqExpression, IQuery query, NhLinqExpression nhQuery)
在 NHibernate.Linq.DefaultQueryProvider.Execute(Expression expression)
在 NHibernate.Linq.DefaultQueryProvider.Execute[TResult](Expression expression)
在 Remotion.Linq.QueryableBase`.GetEnumerator()
在 System.Collections.Generic.List`..ctor(IEnumerable` collection)
在 System.Linq.Enumerable.ToList[TSource](IEnumerable` source)
在 XxxXxxxx.Model.Helper.PagedList`..ctor(IQueryable` source, Int32 pageIndex, Int32 pageSize)
在 XxxXxxxx.Model.Helper.PaginationHepler.ToPagedList[T](IQueryable` source, Int32 pageIndex)
在 XxxXxxxx.Web.Mvc.Areas.Master.Controllers.PoItemSetupController.List(String ticketType, String brand, String productType, String createtimefrom, String createtimeto, String XxxXxxxx, Int32 page)
在 lambda_method(Closure , ControllerBase , Object[] )
在 System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
在 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary` parameters)
在 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary` parameters)
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`.CallEndDelegate(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`.End()
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d()
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`.CallEndDelegate(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`.End()
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<>c__DisplayClass2b.<BeginInvokeAction>b__1c()
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`.CallEndDelegate(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`.End()
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult)
在 System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState)
在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`.CallEndDelegate(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`.End()
在 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
在 System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller)
在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`.CallEndDelegate(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`.End()
在 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)
在 System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult)
在 System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState)
在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`.CallEndDelegate(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`.End()
在 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
在 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)
在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
在 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

上百度,上谷歌...

有人说会不会是Lazy加载的问题,说他试过设置Lazy=false就不会出现这个问题了???纳尼?我来个黑人三问号!这和Lazy加载有什么八杆子关系?

有人说POJO文件和XML文件以及数据库表之间的映射出了问题???这...我表示之前没有做过任何改动,而且之前运行得好好的,不应该有这样的问题。再说了,泥煤,我这是C#程序,表跟我提POJO好吗?

也有人说看了下异常信息,是SQL的问题!!辣么肯定是SQL的问题???好吧,我刚开始也感觉像是SQL的问题,然而我把SQL贴到数据库SQL执行器里执行,并没有问题。更何况我这程序上下全是Linq,Linq代码也会产生这种问题吗?不至于吧...

好吧好吧,后来,我又看了下异常信息,发现有个提示"Can't convert infinite timestamp values to DateTime"...

这是转换失败的意思么?

难道是数据库出了问题?

没有人动数据库呀?

打开对应的wp_format表,看了下时间类型的字段,傻眼了!!!

为什么其中一个时间字段,里面的值全是-inxxxxxx这样的东西,之所以写xxxxx,是因为我改正后忘记单词了,嘿嘿...

而其它时间字段都是"yyyy-mm-dd hh:mm:ss"格式的值。

于是我尝试把错误的值,通过update更新为系统当前时间。

再次调试,终于不会出错了。

但是我不死心,我想要知道为什么会出现这样的问题?

要是找不出来的话,这很黑盒。。。

我尝试手工改动正常的值为非正常的值,比如把"yyyy-mm-dd hh:mm:ss"格式的值,改成-inxxxxxx这样的东西,但是提示值非法,不允许修改...

这个提示,我想也是对的,毕竟字段类型是timestamp,当然只能填时间,不能填其它乱七八糟的东西了。。

哪到底是什么原因出来的呢?

没搞懂...

放弃之,写个文章标记一下。

PS:

2017年02月02日更新

出现这个问题的原因,后来利用空闲时间查清楚了。
是Npgsql.dll版本的原因。
在低版本(2.2.3)中,Npgsql是允许DateTime类型值为"-infinity"。
而在高版本(3.1.9)中,Npgsql是不允许的。
当时项目中使用的是较老的2.2.3版本,我升级到3.1.9后,刚开始并没有发生异常,后来运行一段时间才发生异常。
所以我当时排查问题时,并没有联想到是版本升级后导致的问题。
现在回退后,就再也没有发生过这个问题了。
真尴尬...
嘿嘿~~

2018年04月10日

由于某些原因,再次更新Npgsql版本到最新版,再次搜索问题解决方案。

在Github找到作者提供的解决方法:[-infinity no longer supported?](https://github.com/npgsql/npgsql/issues/557)。

在连接字符串里添加`ConvertInfinityDateTime=true`即可允许`Npgsql`将`infinity`值转换为`DateTime.Max`或`DateTime.Min`,不再抛出异常。

"NHibernate.Exceptions.GenericADOException: could not load an entity" 解决方案的更多相关文章

  1. AndroidStudio报错:Emulator: I/O warning : failed to load external entity "file:/C:/Users/Administrator/.AndroidStudio3

    场景 在进行Android Studio的.Android Studio目录从C盘修改为其他目录后,新建App启动提示: Emulator: I/O warning : failed to load ...

  2. PHP调用webservice遇到 Soap WSDL Error - "failed to load external entity

    本人遇到的原因是服务器上没有安装php-soap centos安装方式: yum install php-soap 安装完成后重启 php-fpm 服务 service php-fpm restart ...

  3. PHP解析xml文件时报错:I/O warning : failed to load external entity

    在代码顶部增加 libxml_disable_entity_loader(false); libxml_disable_entity_loader()作用是设置是否禁止从外部加载XML实体,设为tru ...

  4. 网站部署后Parser Error Message: Could not load type 的解决方案

    asp.net 的Webproject 项目是在64bit机上开发,默认选项发布后,部署到32bit的服务器上,出现Parser Error Message: Could not load type的 ...

  5. Unable to load dll 的解决方案

    前几天在做项目时,需要用到一个非托管的 dll 库,其实使用 .Net 的互操作技术可以很方便地调用非托管 dll 文件中的函数,但是在执行时出现了“Unable to load dll HRESUL ...

  6. 常见Failed to load ApplicationContext异常解决方案!!

    java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.conte ...

  7. idea添加插件后重启后报错:cannot load project xxxx 解决方案

    问题原因:新安装的idea下载插件后重启报错 找到windows上c:\Users\.IntelliJIdea<版本>\config\plugins\这个目录,然后 将对应插件删除

  8. NHibernate问题求大神解决!!!

    这是我定义的实体类 对应的数据库表 映射文件 数据访问层写的是插入语句 错误: 捕捉到 NHibernate.Exceptions.GenericADOException HResult=-21462 ...

  9. NHibernate常见错误汇总

    NHibernateSample.Data.Test.QueryHQLFixture.WhereTest: NHibernate.Hql.Ast.ANTLR.QuerySyntaxException ...

随机推荐

  1. CMS模板应用调研问卷

    截止目前,已经有数十家网站与我们合作,进行了MIP化改造,在搜索结果页也能看到"闪电标"的出现.除了改造方面的问题,MIP项目组被问到最多的就是:我用了wordpress,我用了织 ...

  2. 恋爱虽易,相处不易:当EntityFramework爱上AutoMapper

    剧情开始 为何相爱? 相处的问题? 女人的伟大? 剧情收尾? 有时候相识即是一种缘分,相爱也不需要太多的理由,一个眼神足矣,当EntityFramework遇上AutoMapper,就是如此,恋爱虽易 ...

  3. .NET基础拾遗(5)多线程开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

  4. Jquery mobiscroll 移动设备(手机)wap日期时间选择插件以及滑动、滚动插件

    Jquery Mobiscroll是一个用于触摸设备(Android phones, iPhone, iPad, Galaxy Tab)的日期和时间选择器jQuery插件.以及各种滑动插件 可以让用户 ...

  5. AFNetworking 3.0 源码解读(九)之 AFNetworkActivityIndicatorManager

    让我们的APP像艺术品一样优雅,开发工程师更像是一名匠人,不仅需要精湛的技艺,而且要有一颗匠心. 前言 AFNetworkActivityIndicatorManager 是对状态栏中网络激活那个小控 ...

  6. PhpStorm和WAMP配置调试参数,问题描述Error. Interpreter is not specified or invalid. Press “Fix” to edit your project configuration.

    PhpStorm和WAMP配置调试参数 问题描述: Error. Interpreter is not specified or invalid. Press “Fix” to edit your p ...

  7. 微信小程序体验(1):携程酒店机票火车票

    在 12 月 28 日微信公开课上,张小龙对微信小程序的形态进行了阐释,小程序有四个特定:无需安装.触手可及.用完即走.无需卸载. 由于携程这种订酒店.火车票和机票等工具性质非常强的服务,非常符合张小 ...

  8. 一个软件开发者的BPM之路

    我是小林,一名普通的软件工程师,从事BPM(业务流程管理)软件开发工作.我没有几十年的技术底蕴,无法像大牛们一样高谈阔论,品评BPM开发之道:也不是资深的流程管理专家,能与大家分析流程管理的时弊.我只 ...

  9. 免费公开课,讲解强大的文档集成组件Aspose,现在可报名

    课程①:Aspose.Total公开课内容:讲解全能型文档管理工具Aspose.Total主要功能及应用领域时间:2016-11-24 14:30 (暂定)报名地址:http://training.e ...

  10. 转: 解决Github访问超慢问题

    转自:http://zengrong.net/post/2092.htm 解决Github访问超慢问题 Github is so slowly. 这段时间访问 github 都非常慢,google了一 ...