热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SSH集成过程中常见问题及解决方案

在使用SSH框架进行项目开发时,经常会遇到一些常见的问题。例如,在Spring配置文件中配置AOP事务声明后,进行单元测试时可能会出现“NoHibernateSessionboundtothread”的错误。本文将详细探讨这一问题的原因,并提供有效的解决方案,帮助开发者顺利解决此类问题。
大家好,这两天在用ssh框架写个项目。我在sring的配置文件中配置了aop的事物声明。但是单元测试时一直报
No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
at org.springframework.orm.hibernate3.SpringSessionContext.currentSession(SpringSessionContext.java:63)
at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:695)
at com.zgh.shop.dao.impl.BaseDaoImpl.saveEntity(BaseDaoImpl.java:37)
at com.zgh.shop.service.impl.BaseServiceImpl.saveEntity(BaseServiceImpl.java:69)
at com.zgh.shop.test.TestDao.save(TestDao.java:32)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
不知道是什么问题?我的beans.xml的配置文件为:
 
    
    
    
    
    
    
    
    
    





    
    
    
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">




${hibernate.dialect}
${hibernate.hbm2ddl.auto}
${hibernate.show_sql}





 classpath:com/zgh/shop/domain





          class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        
    
    
     
    
        
            
            
            
            
            
            
            
            
            
            
        

    
    
    
    
        
        
    


以前我就是这样配置的,在其他项目中就能运行成功。但是现在一直报错,请帮我找找原因,谢谢了!!!

10 个解决方案

#1


你的配置没错,可能是service没有交spring管理,你仔细看看代码看写错了吧,再看看你的service里的方法名在不在配置文件中声明

#2


No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here

session会话没有绑定到线程,不能创建事物 。 你是不是没加载配置文件啊。

#3


引用 1 楼 xiaoqiangyuyu 的回复:
你的配置没错,可能是service没有交spring管理,你仔细看看代码看写错了吧,再看看你的service里的方法名在不在配置文件中声明
你好能不能给我说说你的邮箱,我把我的这个项目发给你你帮我看看吧。我调了一天了,还是不知道是什么原因。谢谢了。

#4


引用 2 楼 qq450999788 的回复:
No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here

session会话没有绑定到线程,不能创建事物 。 你是不是没加载配置文件啊。
什么意思?单元测试时加载了。
public class TestC3p0 {
private static ApplicationContext ac = null ;
@BeforeClass
public static void iniAc(){
try {
ac = new ClassPathXmlApplicationContext("beans.xml");
} catch (Exception e) {
e.printStackTrace();
}
}

#5


我也是菜鸟,你最好耐心的看看原理,看看Spring的配置原理,都是做什么用的,一知半解终究不会成为大牛,你给我看看你的项目,我改对了你还是不会的,自己耐下心来解决,不要怕麻烦,这才是最重要的!心里不要骂我啊!!
你的service里的方法配置事务是在配置文件里配置,你把你方法的名字写在配置文件里,初步认定是这里出错了。
再告诉你个方法:1.下载个“有道” 把错误信息翻译一下,你就会恍然大悟
2.找错一般从下开始找,我说的是后台报的错啊,从最低下的CauseBy开始找,一条条解决

#6


引用 5 楼 xiaoqiangyuyu 的回复:
我也是菜鸟,你最好耐心的看看原理,看看Spring的配置原理,都是做什么用的,一知半解终究不会成为大牛,你给我看看你的项目,我改对了你还是不会的,自己耐下心来解决,不要怕麻烦,这才是最重要的!心里不要骂我啊!!
你的service里的方法配置事务是在配置文件里配置,你把你方法的名字写在配置文件里,初步认定是这里出错了。
再告诉你个方法:1.下载个“有道” 把错误信息翻……
servie方法的事物是在配置文件中配置的,在service层的实现类中加@service注解了。能扫描到这个类。我上一个项目就是按照这种方式配置的,那个项目就没错。我把两次的日志信息对比了一下也没发现有什么异常。而且这次创建的项目,映射的表已经在数据库何总生成了。项目配置的应该没有什么问题。我是在是想不出到底是哪出错了。

#7


应该是说的是,你的service里面注入的sessionFactory.getCurrentSession();
不能获取到值,是因为他不能配置在没有注入的事务环境中,
也就是说,应该是你的service的方法没有配置到相应的事务上

#8


引用 7 楼 Inflexible_lin 的回复:
应该是说的是,你的service里面注入的sessionFactory.getCurrentSession();
不能获取到值,是因为他不能配置在没有注入的事务环境中,
也就是说,应该是你的service的方法没有配置到相应的事务上
我在service上配置事物了。
 
    
        
        
    

而且在service层的实现类上也加了@service

#9


你把你的service里需要配置事务的方法改改名字,然后再在配置文件中声明,这样试试看行吧

#10



推荐阅读
  • SQLite数据库CRUD操作实例分析与应用
    本文通过分析和实例演示了SQLite数据库中的CRUD(创建、读取、更新和删除)操作,详细介绍了如何在Java环境中使用Person实体类进行数据库操作。文章首先阐述了SQLite数据库的基本概念及其在移动应用开发中的重要性,然后通过具体的代码示例,逐步展示了如何实现对Person实体类的增删改查功能。此外,还讨论了常见错误及其解决方法,为开发者提供了实用的参考和指导。 ... [详细]
  • 本文将介绍一种扩展的ASP.NET MVC三层架构框架,并通过使用StructureMap实现依赖注入,以降低代码间的耦合度。该方法不仅能够提高代码的可维护性和可测试性,还能增强系统的灵活性和扩展性。通过具体实践案例,详细阐述了如何在实际开发中有效应用这一技术。 ... [详细]
  • JavaScript XML操作实用工具类:XmlUtilsJS技巧与应用 ... [详细]
  • Spring框架的核心组件与架构解析 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
  • 《精通 jQuery》第六章:深入解析与实战应用
    《精通 jQuery》第六章:深入解析与实战应用本章详细探讨了 Ajax 技术的核心机制及其实际应用。Ajax 通过 XMLHttpRequest 对象实现客户端与服务器之间的异步数据交换,从而在不重新加载整个页面的情况下更新部分内容。这种技术不仅提升了用户体验,还提高了应用的响应速度和效率。此外,本章还介绍了如何利用 jQuery 简化 Ajax 操作,并提供了多个实战案例,帮助读者更好地理解和掌握这一重要技术。 ... [详细]
  • 大家好,我是梅巴哥er。本文将深入探讨Redux框架中的第三个实战案例,具体实现每两秒自动点击按钮以触发颜色变化的功能。该案例中,一个关键点在于是否需要使用异步操作来处理定时任务,我们将详细分析其必要性和实现方式。通过这一实例,读者可以更好地理解Redux在实际项目中的应用及其异步处理机制。 ... [详细]
  • Node.js 教程第五讲:深入解析 EventEmitter(事件监听与发射机制)
    本文将深入探讨 Node.js 中的 EventEmitter 模块,详细介绍其在事件监听与发射机制中的应用。内容涵盖事件驱动的基本概念、如何在 Node.js 中注册和触发自定义事件,以及 EventEmitter 的核心 API 和使用方法。通过本教程,读者将能够全面理解并熟练运用 EventEmitter 进行高效的事件处理。 ... [详细]
  • MarsJava 最新发布了 2.1.7 版本,此次更新带来了多项性能优化和功能增强。新版本在系统稳定性、响应速度和资源管理方面进行了显著改进,进一步提升了用户体验。同时,新增了多个实用功能,满足开发者在复杂应用场景中的需求。 ... [详细]
  • 本文深入探讨了 `ExpressionChangedAfterItHasBeenCheckedError` 错误的原因及其解决方案。通过分析 Angular 的变更检测机制,详细解释了该错误的发生条件,并提供了多种有效的应对策略,帮助开发者在实际开发中避免这一常见问题。 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • 手指触控|Android电容屏幕驱动调试指南
    手指触控|Android电容屏幕驱动调试指南 ... [详细]
  • 探索偶数次幂二项式系数的求和方法及其数学意义 ... [详细]
  • 本项目在Java Maven框架下,利用POI库实现了Excel数据的高效导入与导出功能。通过优化数据处理流程,提升了数据操作的性能和稳定性。项目已发布至GitHub,当前最新版本为0.0.5。该项目不仅适用于小型应用,也可扩展用于大型企业级系统,提供了灵活的数据管理解决方案。GitHub地址:https://github.com/83945105/holygrail,Maven坐标:`com.github.83945105:holygrail:0.0.5`。 ... [详细]
  • Spring注解开发指南:@Resource与@Component详解 ... [详细]
author-avatar
邹昕明
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有