hibernate - javax.persistence.TransactionRequiredException : no transaction is in progress

标签 hibernate persistence hql jpa-2.0 atomikos

我有一个使用 HQL 将许多对象存储到数据库中的服务。但我有一个异常(exception)

javax.persistence.TransactionRequiredException: no transaction is in progress
at org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:789)
at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:365)
at $Proxy42.flush(Unknown Source)
at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:240)
at $Proxy42.flush(Unknown Source)
at org.skyway.spring.util.dao.AbstractJpaDao.flush(AbstractJpaDao.java:90)
at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy52.flush(Unknown Source).........

问题可能是数据库上有大量事件的并发操作。 有什么建议吗?

最佳答案

您需要在每个服务方法中使用 session 工厂开始并提交 Hibernate 事务,或者使用 AOP(面向方面​​编程)为您的方法自动启动、提交/回滚事务。请引用this .

关于hibernate - javax.persistence.TransactionRequiredException : no transaction is in progress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11739766/

相关文章:

java - 管理数据库中的历史记录

java - 路径中带有变音符号的 PersistenceException

java - 调用封闭函数时 HQL No data type for Node 异常

java - JPA Hibernate 映射超过 2 个实体

java - 如何在spring boot-JPA-hibernate中获取所有表元数据?

java - 延迟加载数据表使用 FetchType.EAGER 显示重复结果

java - Hibernate:通过 HQL 填充未映射的组件

java - hibernate 错误?

java - 如何持久化实体,如何从没有 "main class"的实体创建表?

java - HQL语法错误