@Transactional в суперклассах, которые не переплетаются при использовании переплетения во время загрузкиJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 @Transactional в суперклассах, которые не переплетаются при использовании переплетения во время загрузки

Сообщение Anonymous »

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

Код: Выделить всё

/**
* Base DAO class
*/
@Transactional
public class JPABase {

@PersistenceContext
private EntityManager entityManager;

public void persist(Object entity) {
entityManager.persist(entity);
}
//some more methods in here
}
и

Код: Выделить всё

/**
* Generic DAO class implementation
*/
@Transactional
public abstract class GenericDao extends JpaBase {
//some methods in here
}
и

Код: Выделить всё

/**
* Specialized DAO class
*/
@Repository
@Transactional
public class PersonDao extends GenericDao {
//some methods in here
}
До сих пор в проекте использовалось плетение во время компиляции, но конфигурация была изменена на использование с -javaagent:/opt/tomcat7-1/lib/spring-instrument.jar.
Поскольку это изменение было применено, JpaBase и GenericDao Аннотации @Transactional больше не вплетаются. Каждый раз, когда класс обслуживания вызывает метод persist для объекта PersonDao, транзакция не запускается.
Примечательно:
  • в прошлом это работало при использовании переплетения времени компиляции.
  • все методы, определенные в PersonDao, плетутся правильно, но те, которые унаследованы (например, persist(Object object)) НЕ переплетаются.
Предполагается, что переплетение во время компиляции и переплетение во время загрузки должны делать одно и то же, просто в разные моменты времени. Почему изменилось поведение плетения?

Подробнее здесь: https://stackoverflow.com/questions/311 ... me-weaving
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»