Java 如何:允许@Transactional函数调用另一个失败并回滚的@Transactional函数,而不首先回滚@Transactional
我有一个场景,其中一个@Transactional函数调用另一个,当第二个函数出错时,它从两个函数回滚事务。当第二个失败时,我有没有办法防止第一个回滚?下面只是一个示例,不是真实的场景,但函数A调用B,如果B出错,A尝试将错误写入数据库。在这种情况下,当B失败时,A中的保存由于回滚而失败 职能A:Java 如何:允许@Transactional函数调用另一个失败并回滚的@Transactional函数,而不首先回滚@Transactional,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我有一个场景,其中一个@Transactional函数调用另一个,当第二个函数出错时,它从两个函数回滚事务。当第二个失败时,我有没有办法防止第一个回滚?下面只是一个示例,不是真实的场景,但函数A调用B,如果B出错,A尝试将错误写入数据库。在这种情况下,当B失败时,A中的保存由于回滚而失败 职能A: @Transactional public void A(){ try{ String test = B(); }catch(Exception e){ //On
@Transactional
public void A(){
try{
String test = B();
}catch(Exception e){
//On error write the error to table
ExecutionError error = new ExecutionError();
error.setErrorId(GUIDUtil.uuid());
error.setErrorMessage(e.getMessage());
executionErrorDao.save(error);
}
}
职能B:
@Transactional
public String B(){
Person person = new Person();
person.setPersonId(GUIDUtil.uuid());
person.setPersonName("Person");
personDao.save(person);
return person.getPersonId();
}
我最近在这里回答了类似的问题。这是否回答了您的问题?B()中的@Transactional(propagation=propagation.REQUIRES_NEW)确实解决了问题,谢谢!