Настройка проекта: Spring 3.0.5 / JPA 2 / Hibernate / @ Transactional
Мы работаем с несколькими различными источниками данных (и, следовательно, с разными менеджерами транзакций), но у нас есть общие базовые классы службы, так как многие функции используются повторно.
Итак, мы подумали, что решим это, используя Пользовательские аннотации . Мы определяем все методы в абстрактном базовом классе и создаем один пустой класс реализации для менеджера транзакций.
Теперь проблема:
В AbstractFallbackTransactionAttributeSource
этот поиск выполняется:
TransactionAttribute txAtt = findTransactionAttribute(specificMethod);
// ...
// Second try is the transaction attribute on the target class.
txAtt = findTransactionAttribute(specificMethod.getDeclaringClass());
Сначала проверяется метод, затем класс, который объявляет метод (и его предков). Но в нашем контексте пользовательская аннотация находится в подклассе, который не может быть найден при переходе вверх.
Так, как мы можем решить эту проблему?
[Я также задавал этот вопрос на весеннем форуме сообщества ]