Le @Transactional fonctionne au niveau DAO mais pas Service
Bonjour à tous,
J'ai un petit bug que je ne comprend pas.
Mon appli possède trois couche : Web, Service et DAO.
Quand je mets le @Transactional dans mon service, ça ne marche pas :
Code:
1 2 3 4 5 6 7 8 9 10 11
| @Service
class MonService
@autowired
private ChienDao chienDao;
@Transactional
public void createMonChien(String name) {
Chien chien = new Chien(name);
chienDao.save(chien);
} |
et
Code:
1 2 3 4 5 6 7 8 9 10
| @Repository
class ChienDao {
@PersistenceContext
private EntityManager entityManager;
public void save(Chien chien) {
entityManager.persist(chien);
} |
Par contre, quand je mets le @Transactional dans le DAO (et que je l'enlève du service), ça marche :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
@Service
class MonService
@autowired
private ChienDao chienDao;
//@Transactional
public void createMonChien(String name) {
Chien chien = new Chien(name);
chienDao.save(chien);
} |
et
Code:
1 2 3 4 5 6 7 8 9 10 11
|
@Repository
class ChienDao {
@PersistenceContext
private EntityManager entityManager;
@Transactional // la ca marche
public void save(Chien chien) {
entityManager.persist(chien);
} |
Donc je ne comprend pas.
J'aurais tendance à penser que ma config est bonne puisque ça marche quand je mets l'annotation dans le DAO...