一个for循环引发的血案

比如有一个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看看