0

ORMとしてHibernateを使用しており、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 に答える