Проект, над которым я работаю, имеет аналогичную структуру для 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
}
До сих пор в проекте использовалось время компиляции, но конфигурация изменилась на использование <context:load-time-weaver/> с -javaagent:/opt/tomcat7-1/lib/spring-instrument.jar.
Поскольку это изменение было применено, аннотации JpaBase и GenericDao @Transactional больше не сотканы. Каждый раз, когда класс службы вызывает метод persist объекта PersonDao, транзакция не запускается.
Примечательно:
- Это использовалось для работы в прошлом, когда используется компиляция времени.
- все методы, которые определены в
PersonDao, сотканы правильно, но те, которые унаследованы (например,persist(Object entity)), НЕ переплетены.
Время компиляции и ткачество во времени должны делать то же самое, только в разные моменты времени. Почему изменилось поведение ткачества?