Bonjour,
J'ai un problème qui m'arrache les cheveux, n'étant pas un expert en J2EE et encore moins avec Jboss, hibernate and Co. je désespère.
Pour vous faire le contexte, c'est client, qui possède des comptes et qui doit se connecté, donc je récupère leur numéro de compte et leur code secret. Le numéro de compte est dans l'entity Compte et le code secret dans l'entity Client.
Maintenant voici les 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
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 package P.Client; import java.io.Serializable; import java.util.Collection; import javax.persistence.*; import P.Compte.Compte; @Entity public class Client implements Serializable { @Id @GeneratedValue (strategy=GenerationType.AUTO) private int numclient; private String prenom; private String nom; private String codesecret; @OneToMany(cascade={CascadeType.REMOVE, CascadeType.PERSIST}, mappedBy="client") private Collection<Compte> compte; public int getNumclient() { return numclient; } public void setNumclient(int numclient) { this.numclient = numclient; } public String getPrenom() { return prenom; } public void setPrenom(String prenom) { this.prenom = prenom; } public String getNom() { return nom; } public void setNom(String nom) { this.nom = nom; } public String getCodesecret() { return codesecret; } public void setCodesecret(String codesecret) { this.codesecret = codesecret; } public Collection<Compte> getCompte() { return compte; } public void setCompte(Collection<Compte> compte) { this.compte = compte; } }Voici la requête : (les requêtes en commentaire fonctionne ...)
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 package P.Compte; import java.io.Serializable; import java.util.Collection; import java.util.Date; import javax.persistence.*; import P.Client.Client; import P.Operation.Operation; @Entity public class Compte implements Serializable { @Id @GeneratedValue (strategy=GenerationType.AUTO) private int numcompte; private int solde; @Temporal(TemporalType.DATE) private Date date; @ManyToOne @JoinColumn(name="numclient") private Client client; @OneToMany(cascade={CascadeType.REMOVE, CascadeType.PERSIST}, mappedBy="compte") private Collection<Operation> operation; public int getNumcompte() { return numcompte; } public void setNumcompte(int numcompte) { this.numcompte = numcompte; } public int getSolde() { return solde; } public void setSolde(int solde) { this.solde = solde; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public Client getClient() { return client; } public void setClient(Client client) { this.client = client; } public Collection<Operation> getOperation() { return operation; } public void setOperation(Collection<Operation> operation) { this.operation = operation; } }
Et voici le message d'erreur :
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 public Boolean connexion(String numcompte, String codesecret){ Boolean result = false; Query q = em.createQuery("select numclient from P.Compte.Compte as c, P.Client.Client as cl where cl.numclient = c.numclient and c.numcompte = :numcompte and cl.codesecret = :codesecret"); q.setParameter("numcompte", numcompte); q.setParameter("codesecret", codesecret); /*Query q = em.createQuery("from Compte where Numcompte = :numcompte"); q.setParameter("numcompte", numcompte); Query m = em.createQuery("from Client where Numclient = :idclient and Codesecret = :codesecret"); m.setParameter("codesecret", codesecret); m.setParameter("idclient", 1); System.out.println(m.getResultList());*/ if(q.getResultList().size() == 1) result = true; return result; }
Auriez vous une idée ? Si vous avez besoin des classes Remote ou que sais-je, je ferais un copier-coller avec plaisir23:04:01,442 ERROR [org.jboss.ejb3.invocation] (http-localhost-127.0.0.1-8080-1) JBAS014134: EJB Invocation failed on component CompteManager for method public abstract java.lang.Boolean P.Compte.CompteManagerRemote.connexion(java.lang.String,java.lang.String): javax.ejb.EJBException: java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: numclient of: P.Compte.Compte [select numclient from P.Compte.Compte as c, P.Client.Client as cl where cl.numclient = c.numclient and c.numcompte = :numcompte and cl.codesecret = :codesecret]
Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: numclient of: P.Compte.Compte [select numclient from P.Compte.Compte as c, P.Client.Client as cl where cl.numclient = c.numclient and c.numcompte = :numcompte and cl.codesecret = :codesecret]
Caused by: org.hibernate.QueryException: could not resolve property: numclient of: P.Compte.Compte [select numclient from P.Compte.Compte as c, P.Client.Client as cl where cl.numclient = c.numclient and c.numcompte = :numcompte and cl.codesecret = :codesecret]
23:04:01,474 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/ProjetDistributeurWeb].[ServletConnexion]] (http-localhost-127.0.0.1-8080-1) "Servlet.service()" pour la servlet ServletConnexion a généré une exception: javax.ejb.EJBException: java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: numclient of: P.Compte.Compte [select numclient from P.Compte.Compte as c, P.Client.Client as cl where cl.numclient = c.numclient and c.numcompte = :numcompte and cl.codesecret = :codesecret]
Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: numclient of: P.Compte.Compte [select numclient from P.Compte.Compte as c, P.Client.Client as cl where cl.numclient = c.numclient and c.numcompte = :numcompte and cl.codesecret = :codesecret]
Caused by: org.hibernate.QueryException: could not resolve property: numclient of: P.Compte.Compte [select numclient from P.Compte.Compte as c, P.Client.Client as cl where cl.numclient = c.numclient and c.numcompte = :numcompte and cl.codesecret = :codesecret]
Partager