Bonjour,
Il est question pour moi de faire des ajouts, modifications et suppressions dans une table. Cette table contient de trois clés étrangères et deux de ces clés constituent la clé primaire (j'ai donc une clé composée). J'ai donc mis en oeuvre le code ci dessous, mais à l'exécution rien ne marche. Je souhaite avoir une aide de votre part afin de résoudre mon problème. Merci
Entity
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
 
// ...
@Embeddable
public class BranchAcctPK implements Serializable {
    private String branchCode;
    private String acctType;
 
    public BranchAcctPK() {
    }
 
    public BranchAcctPK(String branchCode, String acctType) {
        this.branchCode = branchCode;
        this.acctType = acctType;
    }
 
    // getter et setter
 
}
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
22
23
24
25
26
27
28
29
30
31
32
33
 
// ...
@Entity
@Table(name = "PRIME_BRANCHACCTINFO")
public class BranchAcct implements Serializable {
 
    EmbeddedId
    protected BranchAcctPK idBranchAcct;
    private String acctNo;
    @JoinColumn(name = "ACCTTYPE")
    @ManyToOne
    private Type type;
    @JoinColumn(name = "BRANCHCODE")
    @ManyToOne
    private Branch branch;
    @JoinColumn(name = "BANKID")
    @ManyToOne
    private Bank bank;
 
    public BranchAcct() {
    }
 
    public BranchAcct(BranchAcctPK branchAcctPK) {
        this.idBranchAcct = branchAcctPK;
    }
 
    public BranchAcct(String branchCode, String acctType) {
        this.idBranchAcct = new BranchAcctPK(branchCode, acctType);
    }
 
    // getter et setter
 
}
Session Facade
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
22
23
24
25
26
27
28
29
30
31
32
33
34
 
// ...
@Stateless
public class SuiviParametrageFacadeBean implements SuiviParametrageFacade {
 
    @PersistenceContext(unitName = "safe-ejbPU")
    private EntityManager em;
 
    public BranchAcct createBranchAcct(BranchAcct branchAcct) {
        em.persist(branchAcct);
        return branchAcct;
 
    public BranchAcct editBranchAcct(BranchAcct branchAcct) {
        em.merge(branchAcct);
        return branchAcct;
    }
 
    public void removeBranchAcct(BranchAcct branchAcct) {
        branchAcct = em.find(BranchAcct.class, branchAcct.getAcctNo());
        em.remove(em.merge(branchAcct));
    }
 
    public BranchAcct findBranchAcct(Object id) {
        return em.find(BranchAcct.class, id);
    }
 
    public List<BranchAcct> findAllBranchAcct() {
        CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
        cq.select(cq.from(BranchAcct.class));
        return em.createQuery(cq).getResultList();
    }
 
 
}
Session Bean
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
// ...
@Stateless
public class SuiviCompteAgenceBean implements SuiviCompteAgence {
 
    @PersistenceContext(unitName = "safe-ejbPU")
    private EntityManager em;
 
    @EJB SuiviBanque suiviB;
    @EJB SuiviAgence suiviA;
    @EJB SuiviTableDesComptes suiviTc;
    @EJB SuiviParametrageFacade suiviPf;
 
    public BranchAcct enregistrerCompteAgence(String bankId, String branchCode, String acctCode, BranchAcct branchAcct) {
        // lier à bank
        Bank b = suiviB.trouverBanque(bankId);
        branchAcct.setBank(b);
        // lier à branch
        Branch br = suiviA.trouverAgence(branchCode);
        branchAcct.setBranch(br);
        // lier à type
        Type t = suiviTc.trouverTableComptes(acctCode);
        branchAcct.setType(t);
        // enregistrer le compte par agence
        branchAcct = suiviPf.createBranchAcct(branchAcct);
        return branchAcct;
    }
 
    public BranchAcct modifierCompteAgence(BranchAcct branchAcct){
        branchAcct = suiviPf.editBranchAcct(branchAcct);
        return branchAcct;
    }
 
    public BranchAcct supprimerCompteAgence(BranchAcct branchAcct){
        suiviPf.removeBranchAcct(branchAcct);
        return branchAcct;
    }
}