由于没有带文件过来,所以没有源码,可能对于大家检错很不方便,但我还是想问一下, 问题这样的,我用HQL进行投影查询没一点问题,但是用它进行连接查询就会出问题,我有一张User表,里面有一些属性,还有一个Title类的titles属性,关联关系是one 2 many ,
   当我这样:List list = session.createQuery("from User").lsit();
   它报下面的异常:
org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of common.pojos.User.estimates
at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:104)
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 common.pojos.DaoImpl.UserDaoImpl.listEstimate(UserDaoImpl.java:156)
at Test.Test.main(Test.java:41)
Caused by: java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:42)
... 17 more
     但是便奇怪的是,它不是每次会自动生成SQL语句嘛,所以我就把那个SQL语句运行了一下,无论是数据库中直接运行,还是在程序中运行,居然都没错,高手们,这到底是哪出错啦,映射文件我查了好多遍啦,也有几个朋友给我查了,可就是找不出错啊,请各位高手指点,非常感谢!!!

解决方案 »

  1.   

    sql没错,但是org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of common.pojos.User.estimates提示是类的setter出错了。
      

  2.   

    你是有两个表联接查询?
    ScrollableResults re= list = query.scroll();
    就返回个 ScrollableResults 
      

  3.   

    是不是Title类中也有User的实例,然后hibernate取User表的时候会去取Title表,因为Title表中又有user,然后又去user,如此重复下去
    很久没用hibernate了,以前碰到过类似的问题。
      

  4.   

    这个异常java.lang.IllegalArgumentException:参数类型不正确
    有可能是User这个POJO类中的一属性estimates的类型出错了