J'ai longtemps bossé avec Spring/Hibernate mais là je démarre avec EJB3 et je galère avec mon setup transactionnel.
Dans ma couche business j'ai un EJB stateless (donc transactionnel par défaut il me semble) dont une opération fait appel à un autre EJB Stateless (un DAO en l'occurrence). Et ce même DAO utilise l'EntityManager d'Hibernate pour persister. En gros en code, voilà ce que ça donne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
@Stateless
public class MyServiceImpl implements MyService{
    @EJB
    private MyEntityDao dao;
 
    public myMethod(){
        MyEntity entity = new MyEntity();
        dao.persist(entity);
    }
}
 
@Stateless
public class MyEntityDaoImpl implements MyEntityDao{
    @PersistenceContext
    protected EntityManager entityManager;
 
    public void persist(MyEntity entity){
        entityManager.persist(entity);
    }
}
Le tout tourne dans un Weblogic 10.3 avec une datasource Oracle, et démarre sans exception. Maintenant quand je fais un test d'appel sur ma méthode business, j'ai quelques select qui sont faits sur ma DB pour récupérer par exemple l'ID généré pour mon entité dans une séquence, mais je n'ai aucun insert dans le log Hibernate.

Quelqu'un a une idée? Parce que là je pars à la pêche.