我使用 Hibernate 作为 ORM,并且我的 DAO 使用 @Repository
进行注释。
我已经通过这种方式配置了 AOP 建议。
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="edit*" propagation="REQUIRED" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
它们工作得很好,只是如果这些方法中发生任何 sql 异常,它们不会被捕获,因此不会被打印!我猜测是因为事务在执行该方法后提交,但我不确定。
我该如何处理?
最佳答案
看看this similar post 。它建议扩展 SimpleMappingExceptionResolver
public class LoggingExceptionResolver extends SimpleMappingExceptionResolver {
private Logger logger = LoggerFactory.getLogger(LoggingExceptionResolver.class);
@Override
protected void logException(Exception ex, HttpServletRequest request) {
this.logger.warn(buildLogMessage(ex, request), ex);
}
关于java - Spring Transactional DAO,异常被吞掉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11122031/