Bonjour voici mon probleme. J'ai une classe Commande et une classe produit avec comme table d'associaiton lignecommande. qui reprend les id de la classe commande et produit et en plus une propriete quantite. Dans la classe lignecommande, j'ai une classe id Embeddable. bon la voici:
maintenant mon problème est que j'arrive pas à ajouter mes lignes de commandes.j'ai toujour un null pointeur. voici lamethode de mon action.
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132 @Entity public class LigneCommandeClient { @Embeddable public static class Id implements Serializable{ private static final long serialVersionUID = 1L; @Column(name="product_id") private Long productId; @Column(name="cmde_id") private Long cmdeId; public Long getCmdeId() { return cmdeId; } public void setCmdeId(Long cmdeId) { this.cmdeId = cmdeId; } public Long getProductId() { return productId; } public void setProductId(Long productId) { this.productId = productId; } /*public Id(){} public Id(Long productId,Long cmdeId){ this.productId=productId; this.cmdeId=cmdeId; }*/ public boolean equals(Object o){ if(o!=null && o instanceof Id){ Id that=(Id)o; return this.productId.equals(that.productId)&& this.cmdeId.equals(that.cmdeId); } else{ return false; } } public int hashCode(){ return productId.hashCode()+cmdeId.hashCode(); } } private Id id=new Id(); private Produit product; private CommandeClient cmdeclient; private long quantite; public LigneCommandeClient(){} public LigneCommandeClient(long quantite,Produit product,CommandeClient cmdeclient){ //set Fields this.quantite=quantite; this.product=product; this.cmdeclient=cmdeclient; //set identifier values this.id.setCmdeId(cmdeclient.getId()); this.id.setProductId(product.getId()); //Guarentee referential integrity product.getLigneCmdeClients().add(this); cmdeclient.getLigneCmdeClients().add(this); } @ManyToOne @JoinColumn(name="id",insertable=false,updatable=false) public CommandeClient getCmdeclient() { return cmdeclient; } public void setCmdeclient(CommandeClient cmdeclient) { this.cmdeclient = cmdeclient; } @ManyToOne @JoinColumn(name="id",insertable=false,updatable=false) public Produit getProduct() { return product; } public void setProduct(Produit product) { this.product = product; } public long getQuantite() { return quantite; } public void setQuantite(long quantite) { this.quantite = quantite; } @EmbeddedId public Id getId() { return id; } public void setId(Id id) { this.id = id; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((cmdeclient == null) ? 0 : cmdeclient.hashCode()); result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + ((product == null) ? 0 : product.hashCode()); result = prime * result + (int) (quantite ^ (quantite >>> 32)); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; final LigneCommandeClient other = (LigneCommandeClient) obj; if (cmdeclient == null) { if (other.cmdeclient != null) return false; } else if (!cmdeclient.equals(other.cmdeclient)) return false; if (id == null) { if (other.id != null) return false; } else if (!id.equals(other.id)) return false; if (product == null) { if (other.product != null) return false; } else if (!product.equals(other.product)) return false; if (quantite != other.quantite) return false; return true; } }
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 public String SavePanierFinaliser(){ commandeclient.setCommandeAttente(false); commandeclient.setClient(client); commandeclient.setModepaiement(modepaiement); for(Panier mypanier:getListPaniers()){ setTotalTotaux(getTotalTotaux()+mypanier.getTotligne()); } commandeclient.setMonntantCommande(getTotalTotaux()); commandeclient.setDateCommande(todayDate); commandeclient.setDateLimite(dayDatePayement); daoFacade.getCommandeClientDao().saveOrUPdate(commandeclient); Long idc=commandeclient.getId(); commandeclient=daoFacade.getCommandeClientDao().getCommandeClient(idc); //Sauvegarde des lignes de commande for(Panier mypanier:getListPaniers()){ LigneCommandeClient myligne=new LigneCommandeClient(); setLigneCommande(myligne); getLigneCommande().setCmdeclient(commandeclient); getLigneCommande().setProduct(mypanier.getProd()); getLigneCommande().setQuantite(mypanier.getQte()); daoFacade.getLigneCommandeClientDao().saveOrUpdate(getLigneCommande()); commandeclient.getLigneCmdeClients().add(ligneCommande); } addActionMessage("La commande a été bien enregistrées. Commande numéro:"+commandeclient.getId()); return callback; } Merci pour votre aide
Partager