hibernate Transformers.ALIAS_TO_ENTITY_MAP 空指针问题

lex1993 2015-07-24 11:54:32
Query q = session.createQuery("from TblYxsjBm where did in (21,22,25)");
System.out.println(q.list().get(0).toString());
q.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
System.out.println(q.list().get(0));
yxsjbmList = q.list();


在使用transformer之前可以查到数据,没有报错,结果使用transformer之后就报空指针错误
java.lang.NullPointerException
at org.hibernate.transform.AliasToEntityMapResultTransformer.transformTuple(AliasToEntityMapResultTransformer.java:53)
at org.hibernate.hql.internal.HolderInstantiator.instantiate(HolderInstantiator.java:95)
at org.hibernate.loader.hql.QueryLoader.getResultList(QueryLoader.java:465)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2370)
at org.hibernate.loader.Loader.list(Loader.java:2365)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:497)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:387)
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:236)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1300)
at org.hibernate.internal.QueryImpl.list(QueryImpl.java:103)
at pac.ReportGenerator.getData(ReportGenerator.java:84)
at pac.ReportGenerator.main(ReportGenerator.java:57)
...全文
667 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_29351707 2015-11-19
  • 打赏
  • 举报
回复
Map map = (Map)list.get[i]; map.get("id");map.get("name");//取值。 当你取值的时候 按你的SQL语句select后的字段名来作为map的Key,但这个key必须与数据库中的字段名一模一样 所以 你应该 写出 select 列名 from xx,不能直接 Query q = session.createQuery("from TblYxsjBm where did in (21,22,25)");
lex1993 2015-07-24
  • 打赏
  • 举报
回复
自己解决了,把sql语句改一下就好了,select语句要写具体的列,也就是改成select col1,col2 from ……就好了,原因我也搞不清楚,各位大神如果有知道原因的求告知,感激不尽。
lex1993 2015-07-24
  • 打赏
  • 举报
回复
自己顶一下,求高手指点
lex1993 2015-07-24
  • 打赏
  • 举报
回复
引用 1 楼 rui888 的回复:
出现null 了 试试 另还可以返回一个Map对象,也就是说在在list里包含多个Map,代码如下 Query query = session.createSQLQuery("select id,name from Tree t where pid in (select id from Tree) ").setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); //返回一个map,KEY:为DB中名称一致(大小写一致)遍历list时就可以 Map map = (Map)list.get[i]; map.get("id");map.get("name");来取值。按你的SQL语句select后的字段名来作为map的Key,但这个key必须与数据库中的字段名一模一样。
我这个出现问题不是不知道如何取值,是出现了java.lang.NullPointerException,我代码里面那样写是为了测试是不是由于Transformers.ALIAS_TO_ENTITY_MAP导致的问题。结果发现在使用Transformers.ALIAS_TO_ENTITY_MAP之前是没有问题的,可以拿到数据,但是使用之后就变成空指针了。
tony4geek 2015-07-24
  • 打赏
  • 举报
回复
出现null 了 试试 另还可以返回一个Map对象,也就是说在在list里包含多个Map,代码如下 Query query = session.createSQLQuery("select id,name from Tree t where pid in (select id from Tree) ").setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); //返回一个map,KEY:为DB中名称一致(大小写一致)遍历list时就可以 Map map = (Map)list.get[i]; map.get("id");map.get("name");来取值。按你的SQL语句select后的字段名来作为map的Key,但这个key必须与数据库中的字段名一模一样。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧