2 pièce(s) jointe(s)
[JPA][EclipseLink] Requete avec Inner Join
Bonjour,
Je suis en train de développer un webservice en rest avec des entités généré via sqljdbc venant d'une base SQLServer 2005.
Jusqu'a maintenant je n'avais pas trop de soucis avec mes requêtes jpql (se limitant à des simples WHERE jusqu'alors) mais là, je bloque complètement.
Situation :
J'ai 2 entités qui contiennent ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| @Entity
@Table(name = "TblServ_Chambre")
@XmlRootElement
public class TblServChambre implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@NotNull
@Column(name = "ServChId")
private Integer servChId;
@Column(name = "ServChNumService")
private Integer servChNumService;
@Column(name = "ServChNumChambre")
private Integer servChNumChambre;
... |
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
| @Entity
@Table(name = "TblService")
@XmlRootElement
public class TblService implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@NotNull
@Column(name = "ServId")
private Integer servId;
@Size(max = 50)
@Column(name = "ServNom")
private String servNom;
@Size(max = 50)
@Column(name = "ServType")
private String servType;
@Size(max = 50)
@Column(name = "ServNomUK")
private String servNomUK;
@Size(max = 255)
@Column(name = "ServText")
private String servText;
@Size(max = 255)
@Column(name = "ServTextUK")
private String servTextUK;
... |
Donc en gros, TblService contient tous les services et TblServChambre l'id de la chambre et l'id du service qu'elle propose.
J'aimerais donc qu'a partir de l'id d'une chambre, je puisse retrouver les services qu'elle propose. Pour cela j'ai commencé à rédiger une requete avec un inner join qui va piocher dans les 2 tables mais je n'y comprend pas grand chose.
Le plus logique, selon moi, aurai été ça mais ça marche pas (à vrai dire je pense que la syntaxe est mauvaise)
Code:
String queryString = "SELECT s FROM TblService s INNER JOIN TblServChambre t ON s.servId = t.servChNumService WHERE t.servChNumChambre = :id";
Donc là je m'aventure dans des requêtes bizarres en suivant les exemples trouvés sur le net, mais je n'avance pas.
J'ai trouvé de la documentation sur ces sites :
http://download.oracle.com/docs/cd/E...ef_inner_joins
Code:
SELECT pub FROM Publisher pub LEFT JOIN pub.magazines mag WHERE pub.revenue > 1000000
( Pas compris où étais "nommée" la table Magazine... )
http://www.developpez.net/forums/d10...ette-jointure/
Code:
"SELECT DISTINCT a FROM Article a JOIN a.genre g WHERE g.idGenre = :genre"
Le soucis c'est qu'il n'y a pas de clé étrangères dans les tables sur la bdd sqlserver, je pense que ça va faire un carnage si je commence à adapter mes entités avec mes annotation @ManyToOne etc ....
Vous trouverez ci-joint 2 screen des tables en bases de données si j'ai pas été clair.
Est-ce que vous avez une piste ou une idée ?
Je vous remercie d'avance !
Cordialement, Edertef