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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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...