当前位置: 首页 > 知识库问答 >
问题:

如何在使用Spring时手动取消JPA或Hibernate事务

郎伟兆
2023-03-14

我正在使用JPA2Hibernate实现和Spring MVC来管理事务

目前,我们有一个事务是一个单一的方法,类似于:

someDao.save (someObject)

它是从JSF页面调用的@transactional方法。

save方法继承自通用DAO,它将许多具有级联oneToMany关系的实体保存到数据库中,但是它必须在数据库中执行大约1000s的insert语句,所以它需要很长的时间。

显然,我不能在方法中抛出异常,它只是来自源代码的一个调用。JPA PersistenceContext执行所有操作

是否有办法取消操作并强制其回滚?

共有1个答案

赫连瀚
2023-03-14

也许这对您有帮助:
http://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/session.html#cancelquery()

HibernateSession提供了一个cancelQuery-Method,可用于取消当前查询。
注意:在查询真正终止之前,可能需要一些时间。

 类似资料:
  • 问题内容: 我只有一个数据源,我使用Spring 3.0.3,Hibernate 3.5.1作为JPA提供程序,并且使用MyBatis 3.0.2进行某些查询,并且我的应用程序在Tomcat 6上运行。当我同时调用HibernateDAO和MyBatisDAO时,从@Transactional注释的同一方法中,它们似乎不共享同一事务,它们获得了不同的连接。 我该怎么做? 我尝试从DataSourc

  • 问题内容: 我有一个返回sys-refcursor的Oracle函数,当我使用Hibernate调用此函数时,出现以下异常。 我该如何解决? Oracle功能 我的实体班 在DAO中 问题答案: 可以按以下方式使用EntityManager调用Oracle函数或存储过程。 对于Oracle功能 创建一个以sys_refcursor作为返回类型的函数 在实体类中,将函数定义为 对于Oracle存储过

  • 我似乎无法让我的Spring JPA配置正常工作。我有一个Spring REST服务。如果我将所有实体设置为FetchType.EAGER,一切都按预期工作。但是我不想这样做,原因很明显。 当我将实体设置为FetchType时。懒惰,我得到以下错误: org.hibernate.LazyInitializationException:未能懒惰地初始化角色集合:com.service.entitie

  • 问题内容: 现在,我正在制作一个非常简单的网站- 大约5页。问题是,整合某种类型的数据库映射解决方案是否过时且值得花时间,或者仅使用简单的旧JNDI会更好。我可能需要从数据库中读取/写入很多东西。我想我对这些技术有基本的了解,但是仍然需要大量参考文档。还有其他人面对过这个决定吗? 编辑:抱歉,我应该指定JNDI来查找数据库连接和JDBC以执行操作。 问题答案: 简短的答案:这取决于您要支持的复杂性

  • 我有这个类,它致力于通过hibernate的持久层将数据持久化。 问题是它不持久化数据。 堆栈是: 但我必须注意的是,它在其他课堂上效果很好。 更新: 当我打印tx.isActive()时,它给我提供了false。 更新 我试图获取有关错误的更多信息: 我找到了问题所在: 事实上,表tlinkEquipment在同一个表中有2个fk,我保存了TEquipements的数据,然后保存了TEquipe