代码中的写法是:
然后我上网查了好多资料,大多都说要使用getCurrentSession()方法,要在hibernate里配置:
<prop key="hibernate.current_session_context_class">thread</prop>
加上上面的配置之后运行会报这样的错:
org.hibernate.HibernateException: createCriteria is not valid without active transaction
我上网查了很多关于这个错的原因,大多的都说是dao层没有加上事务的原因,都建议在dao层的实现类上也加上@Transaction这个注解,但是我加上之后还是没用,一点效果都没有
问了好几个群,大多都说是因为service里没有配置上事务造成的,可我service类里确实加上了@Service和@Transaction这两个注解了啊。
也有地方说这样配置:
<prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>
但这样配置之后还是会报没有配置之前的错:
org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread
还有说在web.xml里配置的:
这样配置了之后确实没问题,不过用的是OpenSessionInViewFilter,我不太明白是什么意思?跟getCurrentSession()有什么区别吗?
----------------------------------------分割线----------------------------------------
除了上面的配置,我还试了下面这些配置,均无效,都是报错
让我诧异的一个地方是如果是junit4测试的话,是不会报错的,配置如下:
applicationContext.xml里的事务配置:
service里的配置:
dao里的配置:
junit4测试的时候是没有在dao里配置@Transaction ,也没有在applicationContext.xml里的hibernateProperties里配置hibernate.current_session_context_class属性,但测试就是不报错,控制台也有sql语句输出。
----------------------------------------分割线----------------------------------------
解决方案:
<tx:annotation-driven transaction-manager="transactionManager" />
上面这句需要加在DispatcherServlet指定的xml中
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
加在下面的root xml中,会导致在servlet时调用不到事务管理器
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
之所以你用junit可以,是因为junit进来不是经过servlet进来所以你配置在root中的事务管理器能找到。但是普通通过servlet进来的请求,找不到root中的事务管理器,所以需要在DispachServlet指定的xml中配置事务管理器供其使用
getCurrentSession()需要在事物环境下才能取得!,通过给controller层配置事物解决;
相关推荐
报错 org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block 2、百度结果 参考 https://blog.csdn.net/xiaozhaoshigedasb/article/details/88999595 防火墙记得关掉; 查看DataNode是否启动;...
标题“Obtain studio-1.rar”暗示我们正在处理一个与“Obtain studio”项目相关的压缩文件,可能是软件开发工具、编程环境或者相关资源的集合。这个压缩文件由于大小超过50MB,所以被分成了三个部分,这通常是因为...
【标签】"Obtain studio" 暗示这可能与一个名为“Obtain Studio”的开发环境或者工具有关。在软件开发领域,"studio"通常指的是集成开发环境(Integrated Development Environment, IDE),如Android Studio、Visual...
总结一下,本问题涉及了编程中的序列分析和规律推断。我们尝试通过观察数列中的差分并寻找可能的递减规律来确定下一个数字。在找到可能的规律后,我们编写了一个简单的Python函数来计算数列的下一个值。然而,这种...
4. 所有者和权限:在多用户系统中,文件的所有权和权限控制了哪些用户可以读取、写入或执行文件。例如,在Linux/Unix中,`chown`和`chmod`命令用于更改文件所有者和权限;在Windows中,可以在文件属性的“安全”选项...
## you do NOT need this setting if you specify hibernate.transaction.manager_lookup_class #jta.UserTransaction jta/usertransaction #jta.UserTransaction javax.transaction.UserTransaction #jta....
4. **Python获取网关信息**: 在嵌入式系统中,Python可能作为高级语言层用于处理网络通信和数据解析。项目中提到的“Python获取网关信息”可能意味着通过Python脚本,使用TCP/IP协议栈或者某种物联网协议(如MQTT...
"mybatis连接MySQL8出现的问题解决方法" MyBatis是当前最流行的持久层框架之一,它提供了一个简单的方式来访问数据库。然而,在使用MyBatis连接MySQL8时,可能会出现一些问题。本文将介绍MyBatis连接MySQL8出现的...
本文将详细解析一个名为“4步就能搞定上传的多功能上传用户控件”的资源,该控件集成了上传、绑定、下载和查看缩略图等多种功能,非常适合用于需要文件交互的Web应用程序。 首先,我们要理解什么是用户控件。用户...
在上述问题中,应用程序遇到了由于连接池不合理的锁机制导致的连接耗尽问题,表现为无法从连接池获取新的数据库连接,进而引发了一系列的异常。 首先,让我们分析一下这个问题的原因。在Java中,连接池的主要作用是...
Python NLTK库安装Error:Resource u*corpora/gutenberg* not found.-附件资源
The Genymotion virtual device could not obtain an IP address 尝试了 http://blog.csdn.net/beiminglei/article/details/17399333 还是不行, 后来发现,官方推荐的Virtual和Genymotion 不匹配, 则使用...
问题描述:Hadoop抛出java.io.IOException: Could not obtain block错误。 解决办法:该问题是由于结点断开连接所致。解决办法是增加dfs.datanode.max.xcievers的值到4096。 问题6:Problem: "No live nodes ...
在这个名为"Obtain-IP-to-file.rar"的压缩包中,我们主要关注的是`获取IP.c`这个源代码文件,它利用了`System`函数来执行Windows操作系统内置的`ipconfig`命令,从而获取本机的IP地址,并将这些信息写入到指定的文件...
java.io.IOException: Could not obtain block 是 Hadoop 中的常见问题,主要是由于结点断了,没有连接上。解决方法是检查网络连接,确保结点之间的连接是正确的。 java.lang.OutOfMemoryError: Java heap space ...
State-of-the-art sequence labeling systems traditionally require large mounts of task-...We obtain state-of-the-art performance on both datasets — 97.55% accuracy for POS tagging and 91.21% F1 for NER.
《Cortex-M3之STM32嵌入式系统设计》开发软件 《Cortex-M3之STM32嵌入式系统设计》介绍了以ARMCortex-M3为内核的STM32F103增强型微控制器的特点,深入讲解其硬件和软件设计方法。本书分为STM32基础开发、STM32深入...
#### ORA-00033: Current transaction not in cache - **解释**: 当前事务不在缓存中。 - **解决方案**: 确认事务状态和缓存配置。 #### ORA-00034: Unable to locate current PL/SQL transaction - **解释**: ...
OptiSystem光通讯系统仿真软件 OptiSystem 是一款功能全面的软件设计套件,用户可使用该套件对现代光网络传输层中的光学链路进行计划、测试和仿真。这是破解版,大家放心用吧。.