由于没有带文件过来,所以没有源码,可能对于大家检错很不方便,但我还是想问一下, 问题这样的,我用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语句运行了一下,无论是数据库中直接运行,还是在程序中运行,居然都没错,高手们,这到底是哪出错啦,映射文件我查了好多遍啦,也有几个朋友给我查了,可就是找不出错啊,请各位高手指点,非常感谢!!!
当我这样: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语句运行了一下,无论是数据库中直接运行,还是在程序中运行,居然都没错,高手们,这到底是哪出错啦,映射文件我查了好多遍啦,也有几个朋友给我查了,可就是找不出错啊,请各位高手指点,非常感谢!!!
ScrollableResults re= list = query.scroll();
就返回个 ScrollableResults
很久没用hibernate了,以前碰到过类似的问题。
有可能是User这个POJO类中的一属性estimates的类型出错了