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 :

[Hibernate 3.0.5]Vues et jointures


Sujet :

Hibernate Java

  1. #1
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut [Hibernate 3.0.5]Vues et jointures
    Je dispose d'une table contenant un historique de relevés de mesure sur différents lieux d'un objet (prenons un pont par exemple).
    Je dispose d'une vue dont le travail est de me donner le dernier relevé de mesure de chacun des lieux (dernier relevé de la température au début du pont, à la fin du pont, au milieu du pont par exemple)

    Ma vue fonctionne très bien. Mes mappings vers les tables aussi. Le mapping vers la vue fonctionne mal. En effet, ma vue me remonte une clef étrangère (vers la table des ponts) quant je tente de rajouter un <many-to-one> pour relier mon pont tout foire !

    La servlet Tomcat de mon site ne répond tout simplement plus ! Le log hibernate ne m'apprend rien au départ, il m'annonce que le mapping à fonctionner... Mais à la fin du log hibernate il me dit :

    ERROR (org.apache.struts.action.ActionServlet)
    Unable to initialize Struts ActionServlet due to an unexpected exception or error thrown, so marking the servlet unavailable. Most likely, this is due to an incorrect or missing library dependency.
    Dès que je retire la balise <many-to-one>, la servlet fonctionne à nouveau.

    Une idée ?

    PS : (Je précise que les mapping en question fonctionnent très bien quand je fait appel à la table et non pas à la vue. Seulement il ne me faut que les données de la vue (qui subit en somme un filtre complexe de la table)
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 311
    Points : 9 524
    Points
    9 524
    Billets dans le blog
    1
    Par défaut
    Quand tu dis "je dispose d'une vue", tu entends une vue db (create view) ?
    Si c'est le cas, a ma connaissance, il n'est pas possible de faire de mise à jour au travers d'une vue et il semble que c'est ce que tu cherches à faire non ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Citation Envoyé par OButterlin
    Quand tu dis "je dispose d'une vue", tu entends une vue db (create view) ?
    Si c'est le cas, a ma connaissance, il n'est pas possible de faire de mise à jour au travers d'une vue et il semble que c'est ce que tu cherches à faire non ?
    Je me suis mal exprimé, j'apporte des précisions.

    Oui il s'agit bien d'une vue SQL (create view).
    Non je ne cherche pas à la modifier (et pour information, sur certaines vues, on peut faire une modification)
    Je cherche à lister les informations de ma vue uniquement. Mais certaines informations sont dans une autre table. J'ai la clef étrangère dans la vue. Mais je n'arrive pas à "mapper" cette liaison. Dès que je tente de le faire, j'obtiens le message précédemment cité.

    En d'autres termes je souhaite que hibernate fasse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT .... FROM MAVUE
    INNER JOIN UNETABLE
    ON UNETABLE.CLEF = MAVUE.CLEF
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 311
    Points : 9 524
    Points
    9 524
    Billets dans le blog
    1
    Par défaut
    Peux-tu montrer le mapping hibernate ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Voici le mapping de la table tronçon (ou pont) lié à la table Axe.
    Ce mapping fonctionne très bien.
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping default-lazy="true">
        <class
            name="i2.application.vh.valueobject.Tro"
            table="te_troncon_tro">
            <cache usage="read-write"/>
            <id name="id" column="tro_id">
                <generator class="native"/>
            </id>        
            <property name="libelle" column="tro_lib"/>
            <property name="ordre" column="tro_ord"/>
            <property name="zoneSensible" column="tro_zone_sensible"/>
            <property name="moins" column="tro_moins" not-null="false"/>
            <property name="plus" column="tro_plus"/>
            <many-to-one name="axe" column="axe_id" />
        </class>
    </hibernate-mapping>
    Voici le mapping de ma vue :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping default-lazy="true">
        <!--  Couche Hibernate des derniers etats en faisant appel à la vue -->
        <class
            name="i2.application.vh.valueobject.Ett"
            table="ve_etattroncon_ett">
            <cache usage="read-write"/>
            <id name="id" column="eta_id">
                <generator class="native"/>
            </id>        
            <property name="sens" column="eta_sens"/>
            <property name="inscription" column="eta_ins"/>        
            <!-- <many-to-one name="tro" column="tro_id" class="Tro"/>-->
            <!-- <many-to-one name="con" column="con_id" /> -->
        </class>
    </hibernate-mapping>
    Dès que j'enlève l'un des deux commentaires, tout le servlet plante.
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    dans les balises many-to-one, l'attribut class doit avoir pour valeur le nom complet de classe de mapping :


    class="i2.application.vh.valueobject.Tro"


    essaie

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 311
    Points : 9 524
    Points
    9 524
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par beuco Voir le message
    dans les balises many-to-one, l'attribut class doit avoir pour valeur le nom complet de classe de mapping :


    class="i2.application.vh.valueobject.Tro"


    essaie
    C'est une ligne de commentaire...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Performance : vue ou jointure
    Par dorian53 dans le forum Requêtes
    Réponses: 1
    Dernier message: 07/07/2014, 08h56
  2. création de vue avec jointures et fonctions mathématiques
    Par lepeule dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/06/2011, 11h17
  3. Réponses: 1
    Dernier message: 23/08/2006, 20h11
  4. [Conseils] Vue plutôt qu'une requête de multi-jointures
    Par etiennegaloup dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/11/2005, 17h51
  5. [FB1.5]Vue avec jointure sur tables ?
    Par Sitting Bull dans le forum SQL
    Réponses: 2
    Dernier message: 07/12/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