0

我使用 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 异常,它们不会被捕获,因此不会被打印!我猜是因为事务在执行该方法后提交,但我不确定。

我该如何处理?

4

1 回答 1

1

看看这个类似的帖子。它建议扩展 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);
}
于 2012-06-20T15:06:12.123 回答