Persistance, clés composées et clés étrangères
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:
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:
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:
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:
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;
}
} |