Проблема с использованием транзакционной аннотации в Groovy - PullRequest
0 голосов
/ 27 апреля 2010

Кто-нибудь имел опыт работы с транзакциями Spring (на уровне класса, с прокси, управляемыми аннотациями), которые не запускались в Groovy Class? Я боролся с необъяснимым исключением LazyInitialization заметил, что Stacktrace не включает в себя вызов для запуска транзакции. Звучит безумно, но мне интересно, подхватывает ли Groovy Транзакционную аннотацию?

Ответы [ 2 ]

1 голос
/ 28 апреля 2010

На самом деле я нашел источник проблемы. Из документации Spring (я добавил в выделении):

24.5.1. АОП - консультирование скриптовых бобов Можно использовать среду Spring AOP для консультирования скриптовых компонентов. Платформа Spring AOP на самом деле не знает, что рекомендуемый компонент может быть компонентом со сценариями, поэтому все сценарии использования и функции AOP, которые вы можете использовать или намереваетесь использовать, будут работать с компонентами со сценариями. Есть только одна (небольшая) вещь, о которой вам нужно знать при консультировании сценариев bean-компонентов ... вы не можете использовать прокси на основе классов, вы должны использовать прокси на основе интерфейса. Вы, конечно, не ограничены только рекомендациями сценариев bean-компонентов ... вы также можете сами писать аспекты на поддерживаемом динамическом языке и использовать такие bean-компоненты для рекомендаций другим bean-компонентам Spring. Это действительно было бы расширенное использование поддержки динамического языка.

Моя проблема заключалась в том, что я использовал прокси на основе классов.

0 голосов
/ 28 апреля 2010

Если вы используете Grails, вы можете попробовать использовать

MyDomainClass.withTransaction {    
  // Code within the transaction goes here
}

как альтернатива аннотации транзакции. Если код работает с этим подходом, вы можете быть уверены, что причиной проблемы является аннотация (хотя я понимаю, что вам может не понравиться это как постоянное решение).

...