比如有一个for循环:
[code="java"]
for(User u: userService.findAll()){
System.out.println("----------------------------");
System.out.println(u.getName());
}
[/code]
程序运行的时候执行了userService.findAll(),并且打印出了SQL语句,但是为何进入不了循环内部,打印不出“---------------”和u.getName()的值???
这说明你findAll虽然执行了sql,但是没有找到数据(列表size=0),所以进不去
你在程序中打出findAll出来的list,有木有,假如有的话,可能是编译的问题
userService.findAll()
执行数据库查询,你每一次查询都会调用findAll()方法,如果数据量过大或进行了事物处理,很有可能将整个表锁住,你应该吧
userService.findAll()
用一个变量保存,如:
List users=userService.findAll());
for(User u: users){
System.out.println("----------------------------");
System.out.println(u.getName());
}
这样应该没问题了,试试。
你分开写把 先把list取出来
[quote]程序运行的时候执行了userService.findAll(),并且打印出了SQL语句,但是为何进入不了循环内部[/quote]
是findAll查询的记录很多,还没查询结束吧!所以还没到循环体;
如果是大数据量,应该考虑分页查询,还有就是检查查询语句,看看能不能优化sql
你是使用的hibernate查询的吗?把你查询的方法贴出来看看
findAll执行成功不代表有执行成功的对象,对象u为null自然无法进入循环啦。。。。先用变量存起来然后判断一下是否为空咯,
List list = xxx.findAll();
if(list != null){} 这样debug也容易你说是不是。。。
你有没有调用了System的public static void setOut(PrintStream out)方法,把输出打印到别的地方了,比如文件,所以看不见了
加断点看看findAll返回的对象是神马
[code="java"]
List users=userService.findAll());
for(int i=0;i<users.size();i++){
User user = new User();
.............................
}
}
这样试试!!!!!!!
[/code]
把程序上传
[quote]所有的方法无一有效,吐血中[/quote]
好像有点灵异事件了,
for(User u: userService.findAll()){
throw new RuntimeException("灵异事件");
}
看看会不会抛异常,如果没问题,一定能进循环体的。
你是不是在eclipse上开发,看看有没有开启自动构建,刷新一下重新编译一下
IDE出问题 不会影响这个,我倒是觉得编译的问题。
你把.class全部删除,重新全部编译,然后部署 再试试。
这个问题我也遇到过,后来才发现;是线程的问题导致的。
有没有debug看看