IllegalArgumentException: type d'argument décalage dans Hibernate
Sur le bleu j'ai commencé à me “IllegalArgumentException: argument de l'incompatibilité de type” mise en veille prolongée. Hibernate entity travaillait depuis un certain temps et svn journaux de confirmer le code d'être intact.
Ce qui pourrait être le cas?
Voici une partie de l'exception
Jan 16, 2010 10:47:09 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:42)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:337)
at org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:200)
at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3566)
at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:129)
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:854)
at org.hibernate.loader.Loader.doQuery(Loader.java:729)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at org.springframework.orm.hibernate3.HibernateTemplate$30.doInHibernate(HibernateTemplate.java:930)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)
at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:921)
Toute modification apportée à une table de base de données?
Sans rapport avec les changements, ouais
Encore vous pouvez inspecter votre .hbm les fichiers pour voir l'un de ces changements se chevauchent?
u r droit. L'ajout de ce code pour les hbm créé cette erreur
Sans rapport avec les changements, ouais
Encore vous pouvez inspecter votre .hbm les fichiers pour voir l'un de ces changements se chevauchent?
u r droit. L'ajout de ce code pour les hbm créé cette erreur
<set inverse="true" name="qs" sort="unsorted" lazy="false"> <key> <column name="q_id" not-null="false"/> </key> <one-to-many class="com.comp.domain.Q" /> </set>
u Ne ont aucune idée de pourquoi ça pourrait être?OriginalL'auteur Quintin Par | 2010-01-16
Vous devez vous connecter pour publier un commentaire.
Traduction: Hibernate fournit un argument de mauvais type lorsque vous essayez d'appeler une méthode d'initialisation.
Ma première étape serait de savoir qui setter qui est (par exemple, par le débogage de l'application dans eclipse, à l'exception du point d'arrêt, et l'inspection de la pile des variables une fois que le point d'arrêt est atteint).
Edit: qu'est-Ce que la signature de l'ouvreur de la propriété mappée
qs
? Il devrait prendre uneSet<Q>
.OriginalL'auteur meriton
J'ai entendu parler de ce qui se passe en raison sous-jacente de la base de données les modifications du champ (date à date). Il pourrait être intéressant de revenir les modifications de base de données si vous en êtes capable et de le tester, ou le contrôle de l' .hbm ou des annotations de sable suggéré.
<set inverse="true" name="qs" sort="unsorted" lazy="false"> <key> <column name="q_id" not-null="false"/> </key> <one-to-many class="com.comp.domain.Q" /> </set>
u Ne ont aucune idée de pourquoi ça pourrait être?OriginalL'auteur Kaleb Brasee
Donc, vous avez modifié un fichier de mapping hibernate sans modification de l'Entité? Je suppose que le
qs
propriété était déjà là, alors. Mais est-ce unjava.util.Set
(que vous avez utilisé un<set>
à carte votre collection)?OriginalL'auteur Pascal Thivent
La solution est l'utilisation de "addScalar" dans votre exécution de la requête.
Supposons que votre Entité est un utilisateur :
Au lieu de faire :
Utilisation addScalar :
Note : avant LongType.EXEMPLE, il y a mise en veille prolongée.LONG et Hibernate.CHAÎNE (ils sont obsolètes maintenant).
OriginalL'auteur gezdy
Parfois c'est arrivé si les types ne sont pas compatibles. Pour de requête MySQL suite à la conversion de la coulée doit être faite à des fins de compatibilité.
Espère que cela aidera les gens courent dans le même problème avec JPA(JPA-Hibernate pour exact).
OriginalL'auteur zawhtut