问题描述
DaoImpl代码:public List findstudentidList(int i){String hql = "from User u,TTopic t,Log l where u.id = ? and u.name = t.teachername and t.topicid = l.topicid and t.isfinaltopic = true and l.isdroped = true";return this.getHibernateTemplate().find(hql,i);}Action代码:list = new ArrayList();list = this.service.findListstudentid(user.getId());for (int i = 0; i < list.size(); i++){Object[] arr = (Object[])list.get(i);System.out.println("a = "+arr[0].toString());System.out.println("b = "+arr[1].toString());System.out.println("c = "+arr[2].toString());}控制台怎么输出这些:a = gdms.bean.User@1298826b = gdms.bean.TTopic@1a99836c = gdms.bean.Log@148083ba = gdms.bean.User@1298826b = gdms.bean.TTopic@1f31ad9c = gdms.bean.Log@18b4ccb 问题补充:yangleilt 写道
解决方案
如果说 根据多表查询只是查询的条件不同 而显示的数据还是一个表中的数据 这样的话 查询语句按SQL语句一样的写法 如果说 查询出数据要分别显示几个表中的信息的话 这个很麻烦 新建一个实体类 实体类的属性包含要显示数据的字段 然后只能按照原始的数据库连接读取数据 一个个的赋值 添加到List中
解决方案二:
DaoImpl代码: public List findstudentidList(int i){ String hql = "from User u,TTopic t,Log l where u.id = ? and u.name = t.teachername and t.topicid = l.topicid and t.isfinaltopic = true and l.isdroped = true"; return this.getHibernateTemplate().find(hql,i); } Action代码: list = new ArrayList(); list = this.service.findListstudentid(user.getId()); for (int i = 0; i < list.size(); i++){ Object[] arr = (Object[])list.get(i); System.out.println("a = "+arr[0].toString()); System.out.println("b = "+arr[1].toString()); System.out.println("c = "+arr[2].toString()); } public List findstudentidList(int i){...和list = this.service.findListstudentid(user.getId()); 中的findstudentidList findListstudentid 有问题吗1你能不能把正确的代码 贴出来呀
解决方案三:
String hql = "from User u,TTopic t,Log l where u.id = ? and u.name = t.teachername and t.topicid = l.topicid and 这句话里面User u,表示了查出来的是对象list = new ArrayList(); list = this.service.findListstudentid(user.getId()); for (int i = 0; i < list.size(); i++){ Object[] arr = (Object[])list.get(i); System.out.println("a = "+arr[0].toString()); System.out.println("b = "+arr[1].toString()); System.out.println("c = "+arr[2].toString()); } 将对象取出来放到list里面 然后又一一读取放到object的数据里面 这一步有点多余! 为何不直接读取list 从list里面取呢?arr[0]取到的还是对象 所以打印出来的是内存地址了!
解决方案四:
Hibernate取到的是未转型的Object,先转型,然后取bean中的属性值就可以了。例如:((User)arr[0]).getUserName()