我有一个在将查询结果转换为Hibernate模型时给出.ClassCastException的代码
public List loadTransformedObjectWithNativeSQL(String sql, Map map, Object[] parameters, Class className) {
List result = null;
SQLQuery sqlQuery = sessionFactory.getCurrentSession().createSQLQuery(sql);
for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
Map.Entry<String, org.hibernate.type.Type> entry = (Map.Entry<String, org.hibernate.type.Type>) it.next();
sqlQuery.addScalar(entry.getKey(), entry.getValue());
}
for (int i = 0; i < parameters.length; ++i) {
sqlQuery.setParameter(i, parameters[i]);
}
sqlQuery.setResultTransformer(Transformers.aliasToBean(className));
return sqlQuery.list();
}
下面在sqlQuery.setResultTransformer()中给出此错误:
12:33:18,592 INFO [stdout] (default task-13) ************
12:33:18,594 INFO [stdout] (default task-13) ************Contract
12:33:18,594 INFO [stdout] (default task-13) ************17692396
12:33:18,594 INFO [stdout] (default task-13) *********SQLQuery$$$$$$$$$$$$$$$SQLQueryImpl(Select q.ques_id quesid,q.question questionaire ,q.value_typ quesValueType,a.value_id valueID,a.question_value quesValue,(select count(1) from cost_ques_value c where c.ques_id=q.ques_id) noOfAnswer, nvl(v.value_id,'0') modelQuesValueID from cost_questionaire q,cost_ques_value a, cost_mdl_ver_t_c_ques_value v where q.ques_id=a.ques_id and q.Category_level=? and q.ques_id = v.ques_id(+) and v.mdl_ver_id(+)=? and q.rec_status_ind=1 and a.rec_status_ind=1 order by q.ques_id)
12:33:18,594 INFO [stdout] (default task-13) *********classname$$$$$$$$$$$$$$$class com.ge.energy.common.data.config.ModelData
12:33:18,887 ERROR [stderr] (default task-13) java.lang.ClassCastException: com.ge.energy.common.data.config.ModelData cannot be cast to java.util.Map
12:33:18,892 ERROR [stderr] (default task-13) at org.hibernate.property.access.internal.PropertyAccessMapImpl$SetterImpl.set(PropertyAccessMapImpl.java:102)
12:33:18,893 ERROR [stderr] (default task-13) at org.hibernate.transform.AliasToBeanResultTransformer.transformTuple(AliasToBeanResultTransformer.java:78)
12:33:18,893 ERROR [stderr] (default task-13) at org.hibernate.hql.internal.HolderInstantiator.instantiate(HolderInstantiator.java:75)
12:33:18,894 ERROR [stderr] (default task-13) at org.hibernate.loader.custom.CustomLoader.getResultList(CustomLoader.java:435)
12:33:18,894 ERROR [stderr] (default task-13) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2434)
12:33:18,894 ERROR [stderr] (default task-13) at org.hibernate.loader.Loader.list(Loader.java:2429)
12:33:18,894 ERROR [stderr] (default task-13) at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:336)
12:33:18,895 ERROR [stderr] (default task-13) at org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:1980)
12:33:18,895 ERROR [stderr] (default task-13) at org.hibernate.internal.AbstractSessionImpl.list(AbstractSessionImpl.java:322)
12:33:18,896 ERROR [stderr] (default task-13) at org.hibernate.internal.SQLQueryImpl.list(SQLQueryImpl.java:125)
12:33:18,896 ERROR [stderr] (default task-13) at com.gee.gecs.cosmos.dao.BaseDao.loadTransformedObjectWithNativeSQL(BaseDao.java:367)
12:33:18,896 ERROR [stderr] (default task-13) at com.gee.gecs.cosmos.dao.config.ConfigConfigDaoImpl.getModelQuestionaire(ConfigConfigDaoImpl.java:2075)
12:33:18,897 ERROR [stderr] (default task-13) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
12:33:18,897 ERROR [stderr] (default task-13) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
12:33:18,897 ERROR [stderr] (default task-13) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
12:33:18,898 ERROR [stderr] (default task-13) at java.lang.reflect.Method.invoke(Method.java:498)
12:33:18,898 ERROR [stderr] (default task-13) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:338)
12:33:18,898 ERROR [stderr] (default task-13) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:197)