【发布时间】:2012-04-01 00:52:08
【问题描述】:
我正在为 CMS 应用程序使用 Spring 3,JPA + Hibernate。在那个应用程序中,我有一个服务类方法,它用@Transactional 注释和rollBack 属性注释。在该方法中,我使用循环将数据(即实体类)插入到表中。对于循环实体类的每个iteration,都必须保存到数据库中。但它没有发生。提交仅在循环执行完成并退出方法时发生。然后它一次提交并保存所有内容。但是在这种情况下,我需要在将数据插入数据库后读取数据,然后再提交。我尝试使用ISOLATION LEVEL 读取未提交但它不支持,因为我使用的是默认的JPADialect。还尝试添加 jpaDialect 的 hibernate 实现,但仍然没有成功。请帮助解决此问题。还有一件事,有没有什么方法可以使用传播所需的方法。
【问题讨论】:
-
您似乎已经意识到您的问题所在。你只是把你的交易边界放在了错误的地方。一旦你修复它,你应该会发现它按预期工作。
-
您应该能够在同一个事务中读取未提交的数据,而无需提交或更改隔离级别。据我所知,这是最常见的行为..
标签: spring hibernate jpa transactions