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 avec "formula" sur un property


Sujet :

Hibernate Java

  1. #1
    Membre confirmé Avatar de nighthammer
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2005
    Messages : 122
    Par défaut Problème avec "formula" sur un property
    Bonjour,

    Je dois faire une jointure entre deux tables :
    - une table PROJET,
    - une table DEVIS.
    Un devis n'a qu'un seul projet et un projet n'a qu'un seul devis. Je n'ai pas moyen de modifier ces tables car elles ont été créées pour un autre programme.

    Dans la nouvelle application, je dois faire un mapping pour un objet Projet qui se base sur la table PROJET. Et je voudrais ajouter un attribut numeroDevis qui va chercher la bonne valeur dans la table DEVIS. Je n'ai pas voulu faire un objet Devis parce que je n'ai pas besoin du reste des informations.

    J'ai donc fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <property name="numeroDevis">
      <formula>(SELECT d.NUMERODEVIS FROM DEVIS d WHERE d.IDPROJET=idProjet)</formula>
    </property>
    et ça me renvoi l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    org.springframework.orm.hibernate3.HibernateJdbcException: JDBC exception on Hibernate data access; nested exception is org.hibernate.exception.SQLGrammarException: could not load an entity:
    Est ce que vous avez une idée ? Est ce que vous auriez fait autrement ?

    Merci.

  2. #2
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Fais voir ton mapping sur la table DEVIS

  3. #3
    Membre confirmé Avatar de nighthammer
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2005
    Messages : 122
    Par défaut


    Je n'en ai pas.

    Il en faut absolument un ?

    Vu que tu me le demandes je suppose que oui, mais vu que je ne gère pas d'objets "Devis" dans mon application, je pensais que je n'en avais pas besoin.

  4. #4
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Non ce n'est pas necessaire. desole j'avais pas bien regarde.

    Par contre ton sql est etrange pourquoi faire: WHERE d.IDPROJET=idProjet

    Le mieux ca serait que tu montres la structure de tes tables, ainsi que le mapping de PROJET.
    Et l'erreur complete

    Ah regarde par la aussi, quelques exemples de mapping avec formula :
    http://www.hibernate.org/hib_docs/v3...ings.html#misc

  5. #5
    Membre confirmé Avatar de nighthammer
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2005
    Messages : 122
    Par défaut
    Voici la structure simplifiée de mes tables :

    DEVIS
    - IDDEVIS
    - IDPROJET
    - NUMERODEVIS
    - ...

    PROJET
    - IDPROJET
    - CDPROJET
    - LBRPOJET
    - ...

    et voici mon mapping :

    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
     
    <!DOCTYPE hibernate-mapping PUBLIC
    	"-//Hibernate/Hibernate Mapping DTD//EN"
    	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping>
    <class name="Projet" table="PROJET" lazy="false">
      <id name="intId" column="IDPROJET">
      	<generator class="sequence">
      		<param name="sequence">SEQ_PROJET</param>
      	</generator>
      </id>
     
      <property name="strCode" column="CDPROJET"></property>
      <property name="strLibelle" column="LBPROJET"></property>
      <property name="strNumeroDevis">
      	<formula>(SELECT d.NUMERODEVIS FROM DEVIS d WHERE d.IDPROJET=intId)</formula>
      </property>
     
    </class>
    </hibernate-mapping>
    Il doit surement y avoir un truc que j'ai pas bien compris sur l'utilisation de la balise "formula" mais je ne vais pas trop quoi.

    Voila l'erreur que j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Cause : javax.servlet.jsp.JspException: javax.faces.el.EvaluationException: Error getting property 'lstListeRecettes' from bean of type ihm.BeanListeRecettes: org.springframework.orm.hibernate3.HibernateJdbcException: JDBC exception on Hibernate data access; nested exception is org.hibernate.exception.SQLGrammarException: could not load an entity: [metier.Projet#1] [javax.servlet.ServletException]
    javax.servlet.ServletException: javax.servlet.jsp.JspException: javax.faces.el.EvaluationException: Error getting property 'lstListeRecettes' from bean of type ihm.BeanListeRecettes: org.springframework.orm.hibernate3.HibernateJdbcException: JDBC exception on Hibernate data access; nested exception is org.hibernate.exception.SQLGrammarException: could not load an entity: [metier.Projet#1]
    	at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:821)
    	at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
    J'ai pas tout mis parce que je pense que le principal est là. Mais si tu en veux plus, dis le moi.

  6. #6
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Apparament ton probleme vient de la propriete lstListeRecettes.

    Fais voir ta classe BeanListeRecettes.

  7. #7
    Membre confirmé Avatar de nighthammer
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2005
    Messages : 122
    Par défaut
    Mon bean BeanListeRecettes ne fais que consulter la liste des recettes en base et quand je supprime la propriété sur le numéro de devis, ça fonctionne bien.

  8. #8
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Euh ... Je n'ai pas fait de formula depuis bien longtemps, mais c'est pas IDPROJET qu'il faut utiliser (nom de la colonne) au lieu de intId (nom de l'attribut) ??

  9. #9
    Membre confirmé Avatar de nighthammer
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2005
    Messages : 122
    Par défaut
    Je viens de tenter avec cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <formula>(SELECT d.NUMERODEVIS FROM DEVIS d WHERE d.IDPROJET=IDPROJET)</formula>
    Mais ça ne marche pas non plus.

Discussions similaires

  1. [Shell] Problème avec le Back-quote (ksh)
    Par bob94700 dans le forum Linux
    Réponses: 3
    Dernier message: 27/01/2008, 12h45
  2. Sudo problème avec les simples quotes
    Par Tronche dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 23/03/2007, 12h02
  3. [MySQL] Problème avec un double quote
    Par wormseric dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 26/01/2007, 14h44

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