IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

[HQL] "in expected" avec un many-to-many


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 66
    Points : 54
    Points
    54
    Par défaut [HQL] "in expected" avec un many-to-many
    Hello,

    J'ai (encore) un problème.
    J'utilise une relation many to many entre 2 classes, l'une Feed et l'autre Subscriber. Un subscriber peut souscrire à plusieurs feeds, et une feed peut appartenir à plusieurs subscribers... De cette "relation" naît donc une table, que j'ai appelé Subscription, qui contient deux clés étrangères, PK_Feed et PK_Subscriber (les IDs).

    Maintenant, je veux tout simplement récupérer les Feeds auxquels est inscrit un Subscriber. Pour cela, j'utilise la requête suivante (ici la valeur 1 est à titre d'exemple) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT f.Id, f.Title FROM Feed f, Subscriber s, Subscription sub WHERE s.Id ='1' AND s.Id = sub.PKSubscriber AND sub.PKFeed = f.Id
    Avec ma base de données directement (SQL Server), si j'effectue la requête, aucun problème, j'obtiens le résultat... par contre, avec HQL, impossible, j'obtiens cette erreur :

    [NHibernate.QueryException] = {"in expected: sub [SELECT f.Id, f.Title FROM FeedleClient.Feed f, FeedleClient.Subscriber s, Subscription sub WHERE s.Id ='1' AND s.Id = sub.PKSubscriber AND sub.PKFeed = f.Id]"}
    A priori, il ne veut rien savoir de Subscription... peut-être parce-que ce n'est pas une classe dans mon projet ? Mais plutôt une table qui est née d'une relation many-to-many ? Je vois pas comment faire.

    Merci de votre aide.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Points : 495
    Points
    495
    Par défaut
    Salut,
    Mais comment tu définis alors cette relation many-to-many dans les fichiers de mapping de Feed et Subscriber ? Tu peux nous montrer ces mappings ? Parce qu'en principe, c'est plutot aisé à faire, tu déclares une collection de Feed dans la classe Subscriber, avec getter et setter nécessaires, tu définis le mapping many-to-many, puis plus tard pour récupérer les Feeds d'un Subscriber, il te suffira d'appeler le getter (Subscriber.getFeeds()) qui renvoie la collection de feeds. Hibernate s'occupe d'interroger la base de données sans que tu ais à écrire une quelconque requête. Ou alors j'ai pas bien compris ton problème ...
    SCJP 5 / SCBCD 1.3 Certified

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 66
    Points : 54
    Points
    54
    Par défaut
    Arf, faut m'excuser... c'est justement ce que j'ai fait, et j'étais parti sur l'idée de faire une requête HQL (tellement habituer à faire sans Hibernate... en fait première fois que je l'utilise). Donc avec cette technique (celle que tu as mentionné manblaizo), bien-sûr ça fonctionne. Merci

    Par contre j'ai un autre problème, étrange lui, qui concerne une autre requête, celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT f.Id, f.Title, f.Url FROM Feed f WHERE f.Url ='" + url + "'"
    url est ici une string, qui contient... une url. En général, cette requête fonctionne, mais par exemple avec une url = ",1-0,0." elle ne fonctionne pas. Un bug interne ? Car si je découpe cette string, cela fonctionne toujours, mais j'ai repéré le plantage uniquement pour l'instant sur cette string là...

    Merci si vous avez la solution. Ou alors peut-être devrais-je coder mes url je ne sais pas de quel façon ?

Discussions similaires

  1. Réponses: 9
    Dernier message: 20/08/2012, 22h44
  2. onmouseover="Menu_HoverStatic(this)" object expected
    Par cyrano_de_bergerac dans le forum ASP.NET
    Réponses: 0
    Dernier message: 01/10/2010, 16h01
  3. Problème avec Composite-Id (mapping many-to-many))
    Par ammouna24 dans le forum Hibernate
    Réponses: 0
    Dernier message: 07/05/2009, 11h43
  4. Réponses: 2
    Dernier message: 29/08/2006, 10h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo