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 :

Problème de requête sur une vue Hibernate


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 149
    Par défaut Problème de requête sur une vue Hibernate
    Bonjour,

    J'aimerais savoir s'il est possible d'appeler une requête pour afficher le contenu d'une vue?

    Voici mon code :

    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
     
    package INTetatACAV.etatACAV.metier.manager;
     
    import java.util.ArrayList;
    import java.util.List;
     
     
    import org.hibernate.HibernateException;
    import org.hibernate.Query;
    import org.hibernate.Session;
    import org.hibernate.Transaction;
     
     
    import INTutil.HibernateUtil;
     
    public class MifetatACAVManager {
     
    	public List rechercheEtatACAV(Long id_acav, Long numero, String support, Double passif, Double actif, Double en_attente){
     
    		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    		Transaction trx = session.beginTransaction();
    		List listEtatACAV = new ArrayList();
    		String select ="";
    		String from = "";
    		String requeteHQL="";
    		try{
     
    			listEtatACAV=session.createQuery("from ETAT_ACAV ORDER BY id_acav ASC").list();
     
    			System.out.println("tete :"+listEtatACAV);
     
     
     
    		}catch (HibernateException he){
    			he.printStackTrace();
    			return null;
    		}catch (Exception e){
    			e.printStackTrace();
    			return null;
    		}finally{
    			session.close();
    		}
    		return listEtatACAV;	
    	}
    }
    Avec une table physique, ça marche bien par contre avec la vue, il me sort une liste vide...

    Voici le test d'une vue simple que je souhaite afficher son contenu :
    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
     
     SELECT  AA.ID_SUPPORT ,
                 VALEUR ,
                 LIBELLE_COURT ,
                 AA.MONTANT_ACAV_A ,
                 MONTANT_ACAV_P ,
                MONTANT_ACAV_ATTENTE , 
                 FA.ID_ACAV_ATTENTE ,
                 FA.ID_FLUX
     
                FROM VL ,
                 MIF_SUPPORT ,
                 ACAV_ACTIF AA ,
                 ACAV_PASSIF ,
                 ACAV_ATTENTE ,
                 FLUX_ACAV_ATTENTE FA
    Pour le mapping je suis passé par ceci :

    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"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping package="INTetatACAV.etatACAV.metier.entite">
       <!--  Couche Hibernate des derniers etats en faisant appel à la vue -->
    	<class name="MIFetatACAV" table="ETAT_ACAV">
    	  <id name="id_acav" column="SEQ_ID_ACAV">
     
                <generator class="native"/>            
          </id>
     
      	   <many-to-one name="idacavattente" column="ID_ACAV_ATTENTE" class="INTetatACAV.etatACAV.metier.entite.MIFAcavAttente"></many-to-one> 
      	   <many-to-one name="idacavpassif" column="ID_ACAV_PASSIF" class="INTetatACAV.etatACAV.metier.entite.MIFAcavPassif"></many-to-one>      
      	   <many-to-one name="idacavactif" column="ID_ACAV_ACTIF" class="INTetatACAV.etatACAV.metier.entite.MIFAcavActif"></many-to-one>					      
    	</class>
    </hibernate-mapping>
    Et malheureusement il me sort une liste vide à ListEtatACAV et m'affiche ceci :
    Cannot find bean ListEtatACAV in any scope
    hmmm j'ai même ce souci un peu plus haut :

    ETAT_ACAV is not mapped. [from ETAT_ACAV ORDER BY id_acav ASC]


    Or il n'y a pas de formulaire dans la page jsp. Je veux juste afficher le contenu d'une vue pour le moment.

    Merci

  2. #2
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    Pour:
    Et malheureusement il me sort une liste vide à ListEtatACAV et m'affiche ceci :
    Cannot find bean ListEtatACAV in any scope
    ça c le pb dans la jsp, il s'attend à un bean, <jsp:usebean id="ListEtatACAV" ...

    Pour:
    ETAT_ACAV is not mapped. [from ETAT_ACAV ORDER BY id_acav ASC]
    tu as quoi pour le mapping des autres class liées (Attente, passif, active) ?

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 149
    Par défaut
    Citation Envoyé par Fench Voir le message
    Bonjour,

    Pour:

    ça c le pb dans la jsp, il s'attend à un bean, <jsp:usebean id="ListEtatACAV" ...

    Pour:

    tu as quoi pour le mapping des autres class liées (Attente, passif, active) ?
    Bonjour,
    Hmm disons que quand je dis qu'il me sort une liste vide c'est au niveau d'un System.out.println et non pas au niveau de la page jsp.

    Ce que j'ai pour le mapping des autres class liées (Attente, passif, actif)?
    MIFAcavActif
    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
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping package="INTetatACAV.etatACAV.metier.entite">
    	<class name="MIFAcavActif" table="ACAV_ACTIF">
    	  <id name="id_acav_actif" column="ID_ACAV_ACTIF">
                <generator class="increment"/>
          </id>
          <property name="idsupport" column="ID_SUPPORT" 
          		type="java.lang.Long" not-null="true" length="22" />     		
           <property name="montantacava" column="MONTANT_ACAV_A"
    			type="java.lang.Double" not-null="false" length="15" />   
    		<property name="signeacava" column="SIGNE_ACAV_A"
    			type="string" not-null="true" length="255" />	
    		<property name="datecalculacava" column="DATE_CALCUL_ACAV_A" type="date"
    			not-null="false" length="7" />
    		<property name="derdateacava" column="DER_DATE_ACAV_A" type="date"
    			not-null="false" length="7" />								
    		<property name="nbpartsacava" column="NB_PARTS_ACAV_A"
    			type="java.lang.Double" not-null="false" length="15" />
    		<property name="coursvlacava" column="COURS_VL_ACAV_A"
    			type="java.lang.Double" not-null="false" length="15" />
    		<property name="datevlacava" column="DATE_VL_ACAV_A" type="date"
    			not-null="false" length="7" />				
     
    	</class>
    </hibernate-mapping>
    MIFAcavPassif
    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
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping package="INTetatACAV.etatACAV.metier.entite">
    	<class name="MIFAcavPassif" table="ACAV_PASSIF">
    	  <id name="id_acav_passif" column="ID_ACAV_PASSIF">
                <generator class="increment"/>
          </id>
          <property name="idsupport" column="ID_SUPPORT" 
          		type="java.lang.Long" not-null="true" length="22" />
          <property name="montantacavp" column="MONTANT_ACAV_P"
    			type="java.lang.Double" not-null="false" length="15" />   
    		<property name="signeacavp" column="SIGNE_ACAV_P"
    			type="string" not-null="true" length="255" />	
    		<property name="datecalculacavp" column="DATE_CALCUL_ACAV_P" type="date"
    			not-null="false" length="7" />
    		<property name="derdateacavp" column="DER_DATE_ACAV_P" type="date"
    			not-null="false" length="7" />								
    		<property name="nbpartsacavp" column="NB_PARTS_ACAV_P"
    			type="java.lang.Double" not-null="false" length="15" />
    		<property name="coursvlacavp" column="COURS_VL_ACAV_P"
    			type="java.lang.Double" not-null="false" length="15" />
    		<property name="datevlacavp" column="DATE_VL_ACAV_P" type="date"
    			not-null="false" length="7" />				
     
    	</class>
    </hibernate-mapping>

    MIFAcavAttente
    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
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping package="INTetatACAV.etatACAV.metier.entite">
    	<class name="MIFAcavAttente" table="ACAV_ATTENTE">
    	  <id name="id_acav_attente" column="ID_ACAV_ATTENTE">
                <generator class="increment"/>
          </id>
          <many-to-one name="idsupport" column="ID_SUPPORT" class="INTgestiondonnee.produitsupport.metier.entite.MifProduitSupport" />
     
           <many-to-one name="idacavactif" column="ID_ACAV_ACTIF" class="INTetatACAV.etatACAV.metier.entite.MIFAcavActif"  />   
           <property name="idacavpassif" column="ID_ACAV_PASSIF" 
          		type="java.lang.Long" not-null="true" length="22" />
          <many-to-one name="idvl" column="ID_VL" class="INTetatACAV.etatACAV.metier.entite.MIFVL"  />   
    		<property name="dateapplication" column="DATE_APPLICATION" type="date"
    			not-null="false" length="7" />      		   		
           <property name="montantacavattente" column="MONTANT_ACAV_ATTENTE"
    			type="java.lang.Double" not-null="false" length="15" />  
     
     
    	</class>
    </hibernate-mapping>
    Et au lieu de passer par une séquence pour l'id de la vue, on essaie de passer par un composite-id mais je bute à une erreur.

    Voici mon fichier de mapping avec le composite-id:
    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
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping package="INTetatACAV.etatACAV.metier.entite" >
       <!--  Couche Hibernate des derniers etats en faisant appel à la vue -->
    	<class name="MIFetatACAV" table="ETAT_ACAV">
    		  <composite-id name="id_acav"  class="INTetatACAV.etatACAV.metier.entite.MIFetatACAV"  >  
     
     
     	    <key-many-to-one name="idacavattente" column="ID_ACAV_ATTENTE" class="INTetatACAV.etatACAV.metier.entite.MIFAcavAttente"  /> 	  
     	    <key-many-to-one name="idacavpassif" column="ID_ACAV_PASSIF" class="INTetatACAV.etatACAV.metier.entite.MIFAcavPassif"/> 
            <key-many-to-one name="idacavactif" column="ID_ACAV_ACTIF" class="INTetatACAV.etatACAV.metier.entite.MIFAcavActif"/> 
     
        </composite-id>
     
      	   <many-to-one name="idacavattente" column="ID_ACAV_ATTENTE" class="INTetatACAV.etatACAV.metier.entite.MIFAcavAttente"></many-to-one> 
      	   <many-to-one name="idacavpassif" column="ID_ACAV_PASSIF" class="INTetatACAV.etatACAV.metier.entite.MIFAcavPassif"></many-to-one>      
      	   <many-to-one name="idacavactif" column="ID_ACAV_ACTIF" class="INTetatACAV.etatACAV.metier.entite.MIFAcavActif"></many-to-one>					      
    	</class>
    </hibernate-mapping>
    et voici le message d'erreur qu'il m'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Repeated column in mapping for entity: INTetatACAV.etatACAV.metier.entite.MIFetatACAV column: ID_ACAV_ATTENTE (should be mapped with insert="false" update="false")
    J'ai essayé en rajoutant insert="false" update="false" mais rien n'y fait, ça ne passe pas.

  4. #4
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Ok pour la jsp , c parceque j'avais cru voir jsp et moi ça c mon dada (enfin faut pas trop en abuser ...)

    Pour insert et update c bien dans les many-to-one des property et non dans la clés composées des many to one ???

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 149
    Par défaut
    Citation Envoyé par Fench Voir le message
    Ok pour la jsp , c parceque j'avais cru voir jsp et moi ça c mon dada (enfin faut pas trop en abuser ...)

    Pour insert et update c bien dans les many-to-one des property et non dans la clés composées des many to one ???
    Oui en principe mais je ne comprend pas pourquoi il me demande d'ajouter ça update="false" insert="false" Ok effectivement quand je le place dans les many-to-one il me demande ceci : composite-id class must implement Serializable: INTetatACAV.etatACAV.metier.entite.MIFetatACAV
    Ok je pense qu'il faut que je fasse une class qui implement serializable.

  6. #6
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Oui ça c sûr en plus le composite-id je connais pas trop ...

    Mais parcontre en relisant l'erreur du début, tu as regardé des ex de composite-id avec ensuite une déclaration de plusieurs many-to-one ...
    pour lui, ya deux fois la même déclarations de colonnes !!!

    Sinon, j'vois plus et j'vais manger ...

Discussions similaires

  1. problèmes de requêtes sur des vues
    Par krum dans le forum JPA
    Réponses: 0
    Dernier message: 23/06/2009, 10h48
  2. Petit problème de requête sur une arborescence.
    Par grandpa006 dans le forum Requêtes
    Réponses: 1
    Dernier message: 06/03/2008, 09h29
  3. [Lazarus] Problème de requête sur une base de données
    Par bubulemaster dans le forum Lazarus
    Réponses: 1
    Dernier message: 09/11/2007, 18h14
  4. Problème de grant sur une vue utilisant un db_link
    Par squallJ dans le forum Administration
    Réponses: 2
    Dernier message: 04/09/2007, 11h33
  5. [SQL-SERVER 2000] Problème de requête sur une seule ligne
    Par Sytchev3 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/04/2006, 16h54

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