0
我使用Hibernate 4.2作为我的JPA提供程序。 我想使用ScrollableResults对象来处理我的结果集。JPA /休眠4 - 获得ScrollableResults
我的代码看起来是这样的,基本上是:
javax.persistence.Query q = em.createQuery(...);
org.hibernate.Query query = ((org.hibernate.ejb.QueryImpl)q).getHibernateQuery();
query.setParameter(blah blah);
ScrollableResults sr = query.scroll(ScrollMode.FORWARD_ONLY);
这总是会抛出一个异常:
Caused by: java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Integer
at org.hibernate.type.descriptor.java.IntegerTypeDescriptor.unwrap(IntegerTypeDescriptor.java:36)
at org.hibernate.type.descriptor.sql.IntegerTypeDescriptor$1.doBind(IntegerTypeDescriptor.java:57)
at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:92)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:280)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:275)
at org.hibernate.param.NamedParameterSpecification.bind(NamedParameterSpecification.java:66)
at org.hibernate.loader.hql.QueryLoader.bindParameterValues(QueryLoader.java:608)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1870)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1831)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1811)
at org.hibernate.loader.Loader.doQuery(Loader.java:899)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341)
at org.hibernate.loader.Loader.doList(Loader.java:2516)
at org.hibernate.loader.Loader.doList(Loader.java:2502)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2332)
at org.hibernate.loader.Loader.list(Loader.java:2327)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:355)
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:195)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1268)
at org.hibernate.internal.QueryImpl.list(QueryImpl.java:101)
at com.example.server.ChartGenerator.getChart()
作为一个实验,用替换query.list Query.scroll()方法()也产生同样的例外。
QueryImpl类型是一种原始类型,但我无法弄清楚应该在那里放置什么,或者甚至是什么问题。
我的查询返回一个日期后跟几个整数;它不直接映射到一个类。我只想要一个对象数组 - 我有大量的数据要处理,映射到对象只会减慢我的速度!
哎呀,我的上市例外是为query.list()测试,而不是query.scroll()。不过,同样的结果。 – Jamie 2013-04-24 14:33:22
另一个更新:调用query.getReturnTypes()为我的查询返回正确的类型。 – Jamie 2013-04-24 14:43:27
什么是查询,什么是相关实体及其映射? – 2013-04-24 14:46:17