Spring @事务性propogate事务仅适用于少数例外情况

Spring @事务性propogate事务仅适用于少数例外情况,spring,annotations,transactional,Spring,Annotations,Transactional,我试图使所有未检查异常的事务失败,除了一个特定的未检查异常(在我的例子中是-DuplicateKeyException)。如何使用Spring框架的@Transactional注释实现这种定制 谢谢大家! 试试这个选项 这样做: public void driverMethod(){ try{ BeforeException() } catch(DuplicateKeyException e) AfterException() } @Transactional(propagatio

我试图使所有未检查异常的事务失败,除了一个特定的未检查异常(在我的例子中是-DuplicateKeyException)。如何使用Spring框架的@Transactional注释实现这种定制

谢谢大家!

试试这个选项

这样做:

public void driverMethod(){
try{
   BeforeException()
}
catch(DuplicateKeyException e)
   AfterException()
}

@Transactional(propagation = Propagation.REQUIRES_NEW)
private BeforeException(){
}

@Transactional(propagation = Propagation.REQUIRES_NEW)
private AfterException(){
}

那么,当重复的异常发生时,您希望发生什么呢?您对事务“未失败”的定义是什么?我捕获DuplicateKeyException异常并继续事务。如果set@Transactional(propogation=propogation.NEVER),一切都如我所愿,否则它会给我以下错误消息:org.springframework.jdbc.core.StatementCreatorUtils-jdbc 3.0 getParameterType call not supported org.postgresql.util.PSQLException:错误:当前事务被中止,在事务块结束之前忽略命令我尝试了这一点,但它给出了相同的错误。问题似乎是事务失败,这会告诉事务管理器失败事务的回滚操作应该是什么
public void driverMethod(){
try{
   BeforeException()
}
catch(DuplicateKeyException e)
   AfterException()
}

@Transactional(propagation = Propagation.REQUIRES_NEW)
private BeforeException(){
}

@Transactional(propagation = Propagation.REQUIRES_NEW)
private AfterException(){
}