Bonjour,
je n'arrive pas à produire l'équivalent HQL de la requête SQL ci-après
Code SQL : 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 CREATE TABLE AEROPORT( Num_aeroport INT, Nom_aeroport VARCHAR(40), PRIMARY KEY(Num_aeroport)); CREATE TABLE VOL( Num_vol INT, Aeroport_dep INT, Aeroport_arr INT, PRIMARY KEY(Num_vol), CONSTRAINT fkaeroport FOREIGN KEY (Aeroport_dep) REFERENCES AEROPORT (Num_aeroport), CONSTRAINT fkaeroport2 FOREIGN KEY (Aeroport_arr) REFERENCES AEROPORT (Num_aeroport) ); INSERT INTO AEROPORT (Num_aeroport, Nom_aeroport) VALUES ('1', 'Angers'); INSERT INTO AEROPORT (Num_aeroport, Nom_aeroport) VALUES ('2', 'Rennes'); INSERT INTO VOL (Num_vol, Aeroport_dep, Aeroport_arr) VALUES ('1', '1', '2'); INSERT INTO VOL (Num_vol, Aeroport_dep, Aeroport_arr) VALUES ('2', '2', '1');
Requete SQL à tranformer en HQL
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select V.num_vol as VOL, A.nom_aeroport as DEPART, A2.nom_aeroport as ARRIVEE from VOL V LEFT JOIN AEROPORT A on V.aeroport_dep=A.num_aeroport LEFT JOIN AEROPORT A2 on V.aeroport_arr=A2.num_aeroport
voici la classe correspondante à la première la table+-----+--------+---------+ | VOL | DEPART | ARRIVEE | +-----+--------+---------+ | 2 | Rennes | Angers | | 1 | Angers | Rennes | +-----+--------+---------+
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 import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import org.hibernate.annotations.GenericGenerator; @Entity @Table(name = "AEROPORT") public class Aeroport extends EntiteGenerique implements java.io.Serializable { private static final long serialVersionUID = 1L; private int Num_aeroport; private String Nom_aeroport; @Override public String toString() { return (this.Nom_aeroport); } public Aeroport() { } public Aeroport(int num_aeroport, String nom_aeroport) { this.Num_aeroport = num_aeroport; this.Nom_aeroport = nom_aeroport; } @Id @GenericGenerator(name="serial" , strategy="increment") @GeneratedValue(generator="serial") @Column(name = "Num_aeroport", unique = true, nullable = false) public int getNum_aeroport() { return this.Num_aeroport; } public void setNum_aeroport(int num_aeroport) { this.Num_aeroport = num_aeroport; } @Column(name = "Nom_aeroport", length = 255) public String getNom_aeroport() { return this.Nom_aeroport; } public void setNom_aeroport(String nom_aeroport) { this.Nom_aeroport = nom_aeroport; } }
La classe correspondante à la deuxième table
J'ai essayé sans succès de mettre des objets Aeroport dans la class Vol avec des relations OneToOne
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 package models.entities; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import org.hibernate.annotations.GenericGenerator; @Entity @Table(name = "VOL") public class Vol extends EntiteGenerique implements java.io.Serializable { private static final long serialVersionUID = 1L; private int Num_vol; private int Aeroport_dep; private int Aeroport_arr; @Override public String toString() { return ("Num_vol " + Integer.toString(this.Num_vol)); } public Vol() { } public Vol(int num_vol, int aeroport_dep, int aeroport_arr) { this.Num_vol = num_vol; this.Aeroport_dep = aeroport_dep; this.Aeroport_arr = aeroport_arr; } @Id @GenericGenerator(name="serial" , strategy="increment") @GeneratedValue(generator="serial") @Column(name = "num_vol", unique = true, nullable = false) public int getNum_vol() { return this.Num_vol; } public void setNum_vol(int num_vol) { this.Num_vol = num_vol; } @Column(name = "aeroport_dep", length = 255) public int getAeroport_dep() { return this.Aeroport_dep; } public void setAeroport_dep(int aeroport_dep) { this.Aeroport_dep = aeroport_dep; } @Column(name = "aeroport_arr", length = 255) public int getAeroport_arr() { return this.Aeroport_arr; } public void setAeroport_arr(int aeroport_arr) { this.Aeroport_arr = aeroport_arr; } }
la difficulté que j'ai rencontré c'est que la classe Vol a besoin de 2 objet de la class Aeroport pour implémenter l' aéroport de de départ et l'aéroport d'arrivée
Pouvez S.V.P m'aider à résoudre ce problème ?
Partager