2014-02-01 1 views
0

Я хотел бы обернуть/развернуть мою сущность каждый раз, когда она загружена или сохраняется. Я узнал, что я не могу это сделать, используя слушателей JPA, поскольку они могут выполнять только действие над объектом, а не заменять его другим. Естественным решением было бы использовать Аспект. Но существуют ли определенные методы, которые я могу указать? Дело в том, что объект будет обернут/развернутым может быть полем другого лица ...Объект привязки Pointcut/сохраняются действия JPA?

EDIT:

Я узнал, что вы не можете сделать это с помощью Spring AOP, потому что EntityManager не Шпрингторп (почему?) - см. here. Чтобы заставить его работать, я должен был бы явно определить EntityManager bean, но он не рекомендуется в этом сообщении - опять же, почему? Как это сделать? С другой стороны, почему они заявляют, что созданный EntityManager управляется приложениями? См. spring API documentation

ответ

0

Попробуйте указывать геттеры и сеттеры, которые используют класс сущности. Методы, извлекающие объекты из EntityManager, лучший способ для достижения этой цели является создание новой аннотации и поставить на все методы, которые могли бы получить экземпляр для этого класса, а затем использовать поддержку @annotation Pointcut:

@annotation - пределы соответствия присоединиться точками, где предмет точки соединения (метод выполняется в Spring AOP) имеет заданной аннотации

Кроме того, чтобы получить модифицирующий примитив, который вы могли бы сделать что-то подобное.

Get method arguments using spring aop?

Иногда вам нужен доступ в организме советов к фактическому значению, которое было возвращено. Вы можете использовать форму @AfterReturning, которая связывает возвращаемое значение

+0

Это был мой первоначальный подход. Проблема заключается в том, что объект подвергается внутри объекта, в который он вложен. Более того, я думаю, что вы не можете сделать это с помощью Spring AOP, потому что он работает только с управляемыми компонентами ... – kboom

+0

См. Мой обновленный вопрос. – kboom

Смежные вопросы