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 :

Ma clé primaire est un objet


Sujet :

Hibernate Java

  1. #21
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 26
    Points
    26
    Par défaut
    Voici un extrait de ma trace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    java.lang.ClassCastException: bean.Procedure
    	org.hibernate.criterion.Example.getEntityMode(Example.java:247)
    	org.hibernate.criterion.Example.toSqlString(Example.java:177)
    	org.hibernate.loader.criteria.CriteriaQueryTranslator.getWhereCondition(CriteriaQueryTranslator.java:333)
    	org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:82)
    	org.hibernate.loader.criteria.CriteriaLoader.<init>(CriteriaLoader.java:67)
    	org.hibernate.impl.SessionImpl.list(SessionImpl.java:1533)
    	org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
    	org.hibernate.impl.CriteriaImpl.uniqueResult(CriteriaImpl.java:305)
    	bean.Mail.getMailParCode(Mail.java:299)

  2. #22
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    Ah pardon, je crois avoir trouvé. Ta reformulation de ma requete n'est pas exacte en fait ... tu as écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Criteria crit = session.createCriteria(Mail.class);
    crit.add(Restrictions.eq(...));
    crit.createCriteria("procedure");
    crit.add(Example.create(p));
    Or, ma requete était la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Criteria crit = session.createCriteria(Mail.class)
    crit.add(Restrictions.eq(...));
    crit.createCriteria("procedure").add(Exemple.create(p));
    Ce qui est différent car ici, l'exemple se rattache au createCriteria (de type Criterion) de Procedure alors que le tien se rattache au createCriteria (de type Criteria) de Mail.

    Essaie la requete ainsi pour voir

  3. #23
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 26
    Points
    26
    Par défaut
    Effectivement c'est très différent, et ca marche un peu, mais je crois qu'Hibernate essaie de retrouver chaque valeur de champs. Je m'explique ma procedure a tout un tas d'attibut et j'ai l'impression qu'il essaie de comparer tous mes attributs de Procedure a la procédure de mon mail, alors qu'il ne devrait s'intéresser qu'aux identifiants !

    Il me mets une nouvelle jolie erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ARN [http-8080-Processor25] (JDBCExceptionReporter.java:71) - SQL Error: 17041, SQLState: null
    ERROR [http-8080-Processor25] (JDBCExceptionReporter.java:72) - Paramètre IN ou OUT absent dans l'index :: 1
    org.hibernate.exception.GenericJDBCException: could not execute query

  4. #24
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    Je détaillerai ma réponse demain matin mais il me semble qu'il faut alors modifier l'Example crééé en stipulant les champs a prendre en compte dans ce dernier ... la doc Hibernate détaille ce point justement dans la section Example de l'explication sur les critères par l'exemple.

    A demain pour une explication plus approfondie

  5. #25
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 26
    Points
    26
    Par défaut
    Salut,

    Effectivement il est possible d'exclure une propriété de la comparaison en faisant monExample.excludeProperty("maPropriete").

    Je vais tester je te tiens au courant

  6. #26
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    Ah, autant pour moi, j'avais oublié mon explication

    Oui, c'est bien cela, cette méthode pourra peut etre éviter de prendre en compte les autres paramètres de procédure...

    Bon courage pour la suite

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/08/2007, 10h28
  2. Réponses: 3
    Dernier message: 15/02/2007, 12h02
  3. [Clés primaires] Est ce possible de les modifier ?
    Par dynexd dans le forum Access
    Réponses: 3
    Dernier message: 29/09/2006, 14h03
  4. Réponses: 1
    Dernier message: 14/04/2006, 21h46
  5. [c#] Quel est cet objet ?
    Par SDuh dans le forum Windows Forms
    Réponses: 5
    Dernier message: 28/02/2006, 13h27

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