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 :

IllegalArgumentException: argument type mismatch


Sujet :

Hibernate Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 44
    Points : 28
    Points
    28
    Par défaut IllegalArgumentException: argument type mismatch
    Salut !

    J'ai un petit soucis de type pour une variable d'une de mes tables apparement, voici l'erreur que tomcat me crache :

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    javax.servlet.ServletException: org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of hibernateTables.Domaines.enti_codeId
    	org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:520)
    	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:427)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     
     
    cause mère 
     
    org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of hibernateTables.Domaines.enti_codeId
    	org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:104)
    	org.hibernate.tuple.component.AbstractComponentTuplizer.setPropertyValues(AbstractComponentTuplizer.java:81)
    	org.hibernate.tuple.component.PojoComponentTuplizer.setPropertyValues(PojoComponentTuplizer.java:95)
    	org.hibernate.type.ComponentType.setPropertyValues(ComponentType.java:358)
    	org.hibernate.type.ComponentType.resolve(ComponentType.java:586)
    	org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:275)
    	org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1097)
    	org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:565)
    	org.hibernate.loader.Loader.doQuery(Loader.java:701)
    	org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
    	org.hibernate.loader.Loader.doList(Loader.java:2220)
    	org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
    	org.hibernate.loader.Loader.list(Loader.java:2099)
    	org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
    	org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
    	org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
    	org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
    	org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
    	formAction.FormulaireConnection.execute(FormulaireConnection.java:81)
    	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     
     
    cause mère 
     
    java.lang.IllegalArgumentException: argument type mismatch
    	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	java.lang.reflect.Method.invoke(Unknown Source)
    	org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:42)
    	org.hibernate.tuple.component.AbstractComponentTuplizer.setPropertyValues(AbstractComponentTuplizer.java:81)
    	org.hibernate.tuple.component.PojoComponentTuplizer.setPropertyValues(PojoComponentTuplizer.java:95)
    	org.hibernate.type.ComponentType.setPropertyValues(ComponentType.java:358)
    	org.hibernate.type.ComponentType.resolve(ComponentType.java:586)
    	org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:275)
    	org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1097)
    	org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:565)
    	org.hibernate.loader.Loader.doQuery(Loader.java:701)
    	org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
    	org.hibernate.loader.Loader.doList(Loader.java:2220)
    	org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
    	org.hibernate.loader.Loader.list(Loader.java:2099)
    	org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
    	org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
    	org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
    	org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
    	org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
    	formAction.FormulaireConnection.execute(FormulaireConnection.java:81)
    	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    Et les sources concernées :

    Domaines.hbm.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <hibernate-mapping>
    	<class name="hibernateTables.Domaines" table="TB_DOMAINES">
    		<composite-id>
    			<key-property name="codeId" type="integer" column="DOM_CODEID" />
    			<key-many-to-one name="enti_codeId" class="hibernateTables.Entites" >
    				<column name="ENTI_CODEID" />
    			</key-many-to-one>
    		</composite-id>
    		<property name="nom" column="DOM_NOM" />
    	</class>
    </hibernate-mapping>
    Domaines.java :
    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
     
    package hibernateTables;
    import java.io.Serializable;
     
    public class Domaines implements Serializable {
     
    	// Déclaration des variables en relation avec la bdd
    	private int codeId;
    	private String nom;
    	private int enti_codeId;
     
     
    	public Domaines() {
    	}
     
     
    	public int getCodeId() {
    		return codeId;
    	}
    	public void setCodeId(int codeId) {
    		this.codeId = codeId;
    	}
    	public String getNom() {
    		return nom;
    	}
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
    	public int getEnti_codeId() {
    		return enti_codeId;
    	}
    	public void setEnti_codeId(int enti_codeId) {
    		this.enti_codeId = enti_codeId;
    	}	
     
    }
    Dans ma BDD :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE TABLE TB_DOMAINES ( 
      DOM_CODEID   NUMBER        DEFAULT 0 NOT NULL, 
      DOM_NOM      VARCHAR2 (50)  NOT NULL, 
      ENTI_CODEID  NUMBER        DEFAULT 0 NOT NULL,
    La requête que j'essaye de faire passer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    query = connectionBDD.createQuery("FROM Domaines as domaines WHERE domaines.enti_codeId='" + entite[i].getCodeId() + "'");

    En gros j'ai 2 tables,
    - une table Entites (Enti_codeId, Enti_nom, Enti_label)
    - une table Domaines (Dom_codeId, Dom_nom, #Enti_codeId)
    La relation entre les 2 c'est juste qu'un domaine appartient à une entité.

    D'après le log, le problème viendrait d'une différence de type entre "domaines.enti_codeId" et "entite[i].getCodeId()" (dans la requête).
    Le truc, c'est que je ne vois pas pourquoi ce ne sont pas les mêmes, ils sont définis en int et en number dans la BDD Oracle (ce qui correspond bien à int).

    Faut ptet que je rajoute dans le fichier de mapping de Domaines, un champs type dans le <key-many-to-one> ?


    Si vous pouviez m'éclairer

    PS : aussi une autre petite question qui n'a pas trop de rapport avec ça, comment je mets un generate="increment" pour un champs d'un composite-id ?

  2. #2
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut sans trop lire
    query = connectionBDD.createQuery("FROM Domaines as domaines WHERE domaines.enti_codeId='" + entite[i].getCodeId() + "'");

    au hasard les quotes sont responsables (on avait des int non).

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/05/2012, 15h04
  2. Pb d'argument type mismatch dans une combo
    Par RomJo dans le forum Struts 1
    Réponses: 1
    Dernier message: 21/01/2011, 23h35
  3. java.lang.IllegalArgumentException: argument type mismatch
    Par younestar dans le forum Struts 1
    Réponses: 6
    Dernier message: 16/08/2010, 15h37
  4. Problème d'Upload : argument type mismatch
    Par crocodingo dans le forum Struts 1
    Réponses: 3
    Dernier message: 19/11/2009, 23h29
  5. File Form et html:link - Argument type mismatch
    Par JaKoo dans le forum Struts 1
    Réponses: 2
    Dernier message: 02/07/2007, 14h31

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