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 :

Double Join qui ne retourne pas d'éléments


Sujet :

Hibernate Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 2
    Par défaut Double Join qui ne retourne pas d'éléments
    Bonjour,

    J'ai un schéma avec beaucoup de données inter-croisées, et je n'arrive pas à y faire les jointures désirées.

    J'utilise Hibernate avec xdoclet pour faire le fichier de mapping. Voici les classes qui interviennent dans le cadre de mon problème :

    les editeurs:
    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
     
    /**
    *  @alias Publisher
     * @hibernate.class
     *      table="EDITEUR"
     */
    public class Publisher extends DbEntity
    {
    	/**
             *
             * @hibernate.id
             *      generator-class="native"
             *      column="ID_EDITEUR"
             *      access="property"
             */
        @Id
        public Integer getPk() {
        	return super.getPk();
        }
     
       + pleins d'attributs scalaires, leurs getter et leur setters
     
    }
    Les versions publiées :
    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
     
    /**
    * @alias BookDetails
     *
     * @hibernate.class
     *      table="DETAILS"
     */
    public class BookDetails extends DbEntity
    {
      private Book _book;
      private Publisher _publisher;
     
     	/**
             *
             * @hibernate.id
             *      generator-class="native"
             *      column="ID_DETAILS"
             *      access="property"
             */
        @Id
        public Integer getPk() {
        	return super.getPk();
        }
            /**
             * Retrieve the link to the book detailed here.
             * @hibernate.many-to-one
             *              column="ID_OUVRAGE"
             *              class="Book"
             *              not-null="true"
             *      access="property"
             *      lazy="false"
             * @return this detail's {@link Book}. Shall not be <code>null</code>.
             * @see #setBook(Book)
             */
        public Book getBook() {
            return _book;
        }
     
    	/**
             * Retrieve this book details' publisher (mandatory).
             * @hibernate.many-to-one
             *              column="ID_EDITEUR"
             *              class="Publisher"
             *              not-null="true"
             *      access="property"
             *      lazy="false"
             * @return the {@link Publisher} of the book. Shall not be <code>null</code>.
             * @see #setPublisher(Publisher)
             */
        public Publisher getPublisher() {
            return _publisher;
        }
     
    + d'autres trucs scalaires, les getters et les setters
     
    }
    Les Livres (classe commune à plusieurs publication du même ouvrage) :

    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
     
    /**
     * @alias Book
     *
     * @hibernate.class
     *      table="OUVRAGE"
     */
    public class Book extends DbEntity
    {
      private GameLine _gameLine;
     
     	/**
             *
             * @hibernate.id
             *      generator-class="native"
             *      column="ID_OUVRAGE"
             *      access="property"
             */
        @Id
        public Integer getPk() {
        	return super.getPk();
        }
     
    	/**
             * Retrieve the book's game line.
             * @hibernate.many-to-one
             *              column="ID_GAMME"
             *              class="GameLine"
             *              not-null="true"
             *      access="property"
             *      lazy="false"
             * @return this book's {@link GameLine}. Shall not be <code>null</code>.
             * @see #setGameLine(GameLine)
             */
        public GameLine getGameLine() {
            return _gameLine;
        }
     
      + scalaires, getters, setters
    }
    Et enfin les gammes (qui sont des ensembles de livres)

    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
     
    /**
     * @alias GameLine
     * 
     * @hibernate.class
     *      table="GAMME"
     */
    public class GameLine extends DbEntity
    {
     	/**
             *
             * @hibernate.id
             *      generator-class="increment"
             *      column="ID_GAMME"
             *      access="property"
             */
        @Id
        public Integer getPk() {
        	return super.getPk();
        }
     
      + pleins d'attributs scalaires, leurs getter et leur setters
     
    }
    Donc pour résumer : (a -> b pour "A connait B")
    Publisher <- BookDetails -> Book -> GameLine

    Pour 1 publisher donné, je voudrais toutes les gammes dans lesquelles il a publié quelque chose.

    Je pensais donc faire une requete HQL avec en parametre une instance d'éditeur, tel que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     * @hibernate.query
     * 		name="listGameLine"
     * 		query="SELECT gl FROM GameLine gl, Book bo, BookDetails bd WHERE bd.publisher=:editeur AND bd.book = bo and bo.gameLine = gl ORDER BY gl.originalTitle "
    Mais cela ne me retourne rien du tout. Bien entendu, la requete SQL correspondante marche tres bien sous SQL*PLUS, en joinant sur les id au lieu des classes.

    Quelqu'un aurait-il une idée d'où peut venir mon problème ?

    Edit : Je viens d'essayer avec du SQL directement, et ça ne marche pas non plus -___- (Il me fait un java.sql.SQLException: Nom de colonne non valide
    )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    availableGame =_dbSession.createSQLQuery("select distinct gl.id_gamme from gamme gl join ouvrage oo on (oo.id_gamme=gl.id_gamme) join details dd on (dd.id_ouvrage=oo.id_ouvrage) where dd.id_editeur = :id_editeur")
    .addEntity("gl",GameLine.class)
    .setParameter("id_editeur", editeur.getPk() )
    .list();

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 2
    Par défaut
    Bon, après moult retournage d'hibernate dans tous les sens, il s'est avéré....
    ...
    qu'une variable s'appelait gameLine d'un côté et gameline de l'autre, donc je ne voyais rien, forcément.

    Rien à voir avec Hibernate donc, sorry pour le dérangement !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 10/05/2007, 15h53
  2. fonction qui ne s'execute pas mais qui ne retourne pas d'erreur
    Par duplo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/06/2006, 21h43
  3. Query Contains dans Full-Text qui ne retourne pas de valeurs
    Par icebe dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 08/02/2006, 14h04
  4. Join qui ne fonctionne pas
    Par voodooyas dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 15/03/2005, 13h30
  5. [VB.NET] DataSet qui ne retourne pas de résultat
    Par Lois dans le forum Windows Forms
    Réponses: 4
    Dernier message: 02/06/2004, 17h07

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