Spring.Net(&;NHibernate?),缺少异常转换器
我正在将一个使用Spring.NET和NHibernate运行的ASP.NETWebForm应用程序移植到ASP.NETMVC3。在创建了一个新项目并验证了Spring.Net可以在同一个解决方案中正确地跨项目注入依赖项之后,我继续在新解决方案中导入服务和持久性层项目 我的映射现在看起来有点正常(更多信息见本文末尾),但当我启动应用程序时,出现以下错误: 在容器中未找到持久性异常转换器。不能 执行异常转换 [ConfigurationErrorsException:创建上下文“spring.root”时出错: 在容器中找不到持久性异常转换器。无法 执行例外翻译。] 如果我能很好地理解这一点,这意味着引发了一个异常,而Spring.Net不知道如何映射/处理它。。。对吗 假设它来自NHibernate,并且如中有关NHibernate集成的解释,我在映射中添加了ExceptionTranslationProcessorSpring.Net(&;NHibernate?),缺少异常转换器,.net,asp.net-mvc,nhibernate,spring.net,.net,Asp.net Mvc,Nhibernate,Spring.net,我正在将一个使用Spring.NET和NHibernate运行的ASP.NETWebForm应用程序移植到ASP.NETMVC3。在创建了一个新项目并验证了Spring.Net可以在同一个解决方案中正确地跨项目注入依赖项之后,我继续在新解决方案中导入服务和持久性层项目 我的映射现在看起来有点正常(更多信息见本文末尾),但当我启动应用程序时,出现以下错误: 在容器中未找到持久性异常转换器。不能 执行异常转换 [ConfigurationErrorsException:创建上下文“spring.ro
<object type="Spring.Dao.Attributes.PersistenceExceptionTranslationPostProcessor, Spring.Data"/>
我在Persistence.xml文件中添加了
PersistenceExceptionTranslationPostProcessor。出于想法,我还尝试将其添加到另一个xml中,但没有任何效果。当容器中没有实现IPersistenceExceptionTranslator
的对象时,会出现此错误。当您有一个Spring.Net+NHibernate应用程序时,这通常是Spring.Net的LocalSessionFactoryObject
。PersistenceExceptionTranslationPostProcessor
检查注册的IPersistenceExceptionTranslator
实例的上下文
在NHibernate异常中不会出现此错误,但在容器启动时会出现此错误。问题是Spring容器想要这样做,但它在容器中找不到一个异常转换器
如果您不使用Spring.net的LocalSessionFactoryObject
(无论出于何种原因),您应该向容器注册自己的IPersistenceExceptionTranslator
。界面非常简单:
public interface IPersistenceExceptionTranslator
{
DataAccessException TranslateExceptionIfPossible(Exception ex);
}
可以以为例。当容器中没有实现IPersistenceExceptionTranslator
的对象时,会出现此错误。当您有一个Spring.Net+NHibernate应用程序时,这通常是Spring.Net的LocalSessionFactoryObject
。PersistenceExceptionTranslationPostProcessor
检查注册的IPersistenceExceptionTranslator
实例的上下文
在NHibernate异常中不会出现此错误,但在容器启动时会出现此错误。问题是Spring容器想要这样做,但它在容器中找不到一个异常转换器
如果您不使用Spring.net的LocalSessionFactoryObject
(无论出于何种原因),您应该向容器注册自己的IPersistenceExceptionTranslator
。界面非常简单:
public interface IPersistenceExceptionTranslator
{
DataAccessException TranslateExceptionIfPossible(Exception ex);
}
您可以以为例。除了@Marijn的post之外,根据您的配置,有时异常在容器中找不到持久性异常转换器。
涵盖了真正的原因。附加到进程启动并捕获所有spring.net异常(Ctrl+Alt+E/CLR异常)通常会揭示根本原因
例如,配置错误的会话工厂
,即使设置了正确的PersistenceExceptionTranslationPostProcessor并将其注册到上下文中
我通常从我的DAO中删除存储库
属性(它通过AOP添加异常转换并覆盖错误),以消除出现底层错误的PersistenceExceptionTranslationPostProcessor
此外,除了@Marijn的post之外,您还可以发布web.config
和Persistence.xml的相关部分,具体取决于您的配置,有时容器中会出现异常无持久异常转换器。
涵盖了真正的原因。附加到进程启动并捕获所有spring.net异常(Ctrl+Alt+E/CLR异常)通常会揭示根本原因
例如,配置错误的会话工厂
,即使设置了正确的PersistenceExceptionTranslationPostProcessor并将其注册到上下文中
我通常从我的DAO中删除存储库
属性(它通过AOP添加异常转换并覆盖错误),以消除出现底层错误的PersistenceExceptionTranslationPostProcessor
此外,您还可以发布web.config
和Persistence.xml
的相关部分。非常感谢,这确实只是一种掩饰。真正的根本原因是NHibernate(Iesi.Collections)的依赖项没有被复制到输出目录。。。因此Spring很难实例化DAO层。。。该死的>\非常感谢,这确实只是一种掩饰。真正的根本原因是NHibernate(Iesi.Collections)的依赖项没有被复制到输出目录。。。因此Spring很难实例化DAO层。。。该死的>_