Код: Выделить всё
/**
* 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
}
Поскольку это изменение было применено, JpaBase и GenericDao Аннотации @Transactional больше не вплетаются. Каждый раз, когда класс обслуживания вызывает метод persist для объекта PersonDao, транзакция не запускается.
Примечательно:
- в прошлом это работало при использовании переплетения времени компиляции.
- все методы, определенные в PersonDao, плетутся правильно, но те, которые унаследованы (например, persist(Object object)) НЕ переплетаются.
Подробнее здесь: https://stackoverflow.com/questions/311 ... me-weaving
Мобильная версия