Spring事务不会回滚

问题描述 投票:0回答:1

我正在使用spring事务并休眠以将数据插入oracle数据库表:

这是我面临的问题:我有两个表在休眠状态下具有一对一的映射关系。我正在使用下面的方法调用在这两个表中插入数据。事务从一种方法传播到另一种方法,因此在两个表中插入数据都是在一个事务中进行的。

问题:是,当在第二个表中插入数据时,如果抛出诸如“ constraintvoilationexception ---不能在特定列中插入null”之类的异常,.....那么理想情况下,不应将数据插入任何的表,即事务应回滚,, ...,但是这不会发生...当在第二个表中插入数据时引发异常时...记录确实插入到第一个表中,理想情况下不会发生,即整个交易应回滚...

您能帮忙吗,...在应用@Transactional时出现错误,还是有其他原因(可能来自数据库方面,但不确定)

@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
public void methodA(){
  // inserting data in table 1;
methodB();

}

@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
public void methodB{
// inserting data in table 2;

}
spring oracle hibernate hibernate-mapping spring-transactions
1个回答
-1
投票

定义零(0)个或更多异常类,这些类必须是Throwable的子类,指示哪些异常类型必须引起事务回滚。 Details Here

© www.soinside.com 2019 - 2024. All rights reserved.