Java Aspectj内部交易-don';无法在回滚时保存日志

Java Aspectj内部交易-don';无法在回滚时保存日志,java,transactions,aspectj,rollback,Java,Transactions,Aspectj,Rollback,假设这是我代码的模式: 一类: @Transactional public void mainMethod(){ // do smth 1 addSmthToDatabase(); // do smth 2 } 二等舱: public void logAdd() { //save what's addedd } 在方法addSmthToDatabase()上添加了方面。从addSmthToDatabase()返回后,将调用logAdd方法,该方法保存添加到数据库中的内

假设这是我代码的模式:

一类:

@Transactional
public void mainMethod(){
   // do smth 1
   addSmthToDatabase();
   // do smth 2
}
二等舱:

public void logAdd() {
   //save what's addedd
}
在方法addSmthToDatabase()上添加了方面。从addSmthToDatabase()返回后,将调用logAdd方法,该方法保存添加到数据库中的内容。
提交事务时,它工作正常。但当smth在“do smth 2”中出错时,事务将回滚,所以不会向数据库中添加任何内容。但日志仍然保存。我怎样才能修好它

如果确定整个事务(
@Transactional void main method()
)已成功,那么将其记录到日志中如何?问题是,并非每次都调用addsMThodatabase()。此方法的执行取决于某些数据,因此有时会调用此方法(应保存日志),有时不会调用(不应保存日志)。然后记录更改数据库的事件和回滚(如果有)。或者只登录提交。如果您记录了一些稍后可能会回滚的内容,那么您可能记录得太早了。保持简单。好的,谢谢。我认为也可以回滚aspectj方法。但似乎不是,所以我将它改为登录主方法。你说的“回滚方法”是什么意思?无法取消执行方法或取消记录消息。但是一个好的RDBMS在设计上支持事务,这与日志记录完全不同如果确定整个事务(
@Transactional void main method()
)已成功,那么将其记录到日志中如何?问题是,并非每次都调用addsMThodatabase()。此方法的执行取决于某些数据,因此有时会调用此方法(应保存日志),有时不会调用(不应保存日志)。然后记录更改数据库的事件和回滚(如果有)。或者只登录提交。如果您记录了一些稍后可能会回滚的内容,那么您可能记录得太早了。保持简单。好的,谢谢。我认为也可以回滚aspectj方法。但似乎不是,所以我将它改为登录主方法。你说的“回滚方法”是什么意思?无法取消执行方法或取消记录消息。但是一个好的RDBMS在设计上支持事务,这与日志记录完全不同