Bonjour à tous,
Voici ma situation :
Un EJB Session ClientFacade appelle la méthode Lire_Categorie_Id() de l'EJB Session CategorieFacade. Lors de cet appel l'instance de l'EntityManager enCat est nulle alors que par ailleurs lorsque la méthode Liste_Categories() est appelée par la servlet tout fonctionne bien.
Voici le code en question :
ClientFacade :
CategorieFacade :
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 @TransactionAttribute(TransactionAttributeType.REQUIRED) public void Maj_Client(Integer id, String identite, String adresse, String login, String pwd, Integer credits, Integer id_categorie) throws Exception { Client clientE = null; Categorie categorieE = null; CategorieFacade categorieF = null; try { clientE = Lire_Client_Id(id); categorieF = new CategorieFacade(); categorieE = categorieF.Lire_Categorie_Id(id_categorie); clientE.setCategorie(categorieE); clientE.setAdresseClient(adresse); . . . em.merge(clientE); } catch (Exception e) { throw e; } }
J'ai "résolu" le problème ou plutôt contourné le problème en passant la référence de l'EM du client à Lire_Categorie_Id() comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public Categorie Lire_Categorie_Id(int id_categorie) throws Exception { try { return emCat.find(Categorie.class, id_categorie); } catch (Exception e) { throw e; } }
Categoriefacade :
ClientFacade :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public Categorie Lire_Categorie_Id(int id_categorie, EntityManager emClient) throws Exception { try { return emClient.find(Categorie.class, id_categorie); } catch (Exception e) { throw e; } }
Ma question est : est-ce bien orthodoxe ? Et si non quel autre moyen ai-je de résoudre ce petit problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public void Maj_Client(Integer id, String identite, String adresse, ... . . . categorieF = new CategorieFacade(); categorieE = categorieF.Lire_Categorie_Id(id_categorie, em); . . .
Merci d'avance,
Partager