зафиксировать изменения в try-catch внутри @Transactional

Предположим, у меня есть метод, выполняющий некоторые вещи и механизм регистрации в стиле шаблона ActiveRecord:

@Transactional
public void doSmt() {
    try {
        someOperation(); // can throw exception
        Logger.logIntoDb(); // if everything is OK
    } catch {Exception e} {
        Logger.logIntoDbWithException(e.getMessage()); // log error into db

        throw new MyCustomException(e);
    }
}

public static void logIntoDbWithException(String message) {
    final LogEntry logEntry = new LogEntry();
    logEntry.setDate(new Date());
    logEntry.setMessage(message);
    logEntry.persist();
}

Я хочу сохранить сообщение об ошибке в случае сбоя, но если я переброшу исключение в транзакции предложения catch, будет выполнен откат, и мой LogEntry не будет сохранен. Я вижу только вручнуюflush() послеpersist().

Есть ли более чистое решение для этого?

Благодарю.

UPD:

Поскольку у меня есть статический метод, который выполняет сохранение, мне нужно применить следующий хак к принятому ответу:

public static void logIntoDbWithException(String message) {
    new Runnable() {
        @Transactional(propagation = Propagation.REQUIRES_NEW)
        public void run() {
            final LogEntry logEntry = new LogEntry();
            logEntry.setDate(new Date());
            logEntry.setMessage(message);
            logEntry.persist();
        }
    }.run();
}

Ответы на вопрос(1)

Ваш ответ на вопрос