【发布时间】:2015-10-09 07:28:06
【问题描述】:
我尝试使用 resulttransformer (AliasToBeanResultTransformer) 运行本机 sql 查询,它给出如下错误。
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: com.ozpas.ozentegre.entity.EntDevirlog cannot be cast to java.util.Map
at org.hibernate.property.access.internal.PropertyAccessMapImpl$SetterImpl.set(PropertyAccessMapImpl.java:102)
at org.hibernate.transform.AliasToBeanResultTransformer.transformTuple(AliasToBeanResultTransformer.java:78)
顺便说一句,我的原生 sql 查询不包括实体 (EntDevirlog) 中的所有字段,该实体中只有一些字段。查询是否应包括实体中的所有字段?
据我了解,休眠将结果转换为地图对象而不是 EntDevirlog 实体。它使用 PropertyAccessMapImpl。我怎样才能解决这个问题以将结果作为列表(arraylist)?谢谢。
Session session = HibernateUtilMikro.getSessionFactory().openSession();
List<EntDevirlog> results = new ArrayList<EntDevirlog>();
Transaction tx = null;
String sql = "mynativequery";
SQLQuery query = session.createSQLQuery(sql);
query.setParameter("tarih", tarih);
query.setParameter("srmkodu", srmkodu);
query.setParameter("s1", EnumPanoislemtipleri.islem1.getValue());
query.setParameter("s2", EnumPanoislemtipleri.islem2.getValue());
query.setResultTransformer(new AliasToBeanResultTransformer(EntDevirlog.class));
results = query.list();
tx.commit();
【问题讨论】:
-
尝试修改HibernateUtilMikro.getSessionFactory().openSession().getSession(EntityMode.POJO)
-
没有像 getSession (EntityMode.POJO) 这样的方法,我使用 Hibernate 5