我的数据库表对应的实体是一个纯实体,没有关联到其他对象。Session session = getSession();
Query query =session.createQuery(hqlString);
query.setFirstResult(startIndex);
query.setMaxResults(pageSize);
list = (List<P0001_IndexLog>)query.list();
System.out.println("size: "+list.size()); //此句打印出来10
System.out.println(list.get(0).getField1());//此句抛出空指针
为啥呀?list = (List<P0001_IndexLog>)query.list();
这里不用泛型也不行,不强转也不行。而我用编译后的SQL语句在数据库运行可以查出东西。检查了HQL语句也没有大小写的错误。

解决方案 »

  1.   

      你断点啥断点到list = (List<P0001_IndexLog>)query.list();
     后,看List集合里边你说的list中第一个元素是否存在,你的field1值是否存在啥!
      

  2.   

    你设置断点,然后观察list的里面的所有集合的元素是什么,既然你都说有集合大小10,
    那么应该可以观察到的
      

  3.   

    System.out.println(list[0].getField1());// 这样呢
      

  4.   

    问题解决了,原来是我在实体中指定的ID在数据库中是为NULL。遗留系统呀!
    另外选一个变量指定为ID就好了!
      

  5.   

      ArrayList的初始长度是10的,就算你没数据,他长度还是10。你数据库中没取到,自然是null
      

  6.   

    System.out.println(list.get(0).getField1());//此句抛出空指针
    说明你没有从数据库里面取到数据呗.!  检查下查询语句