hibernate 一对多 查询问题

toto71229 2011-08-23 10:19:11
想问一下,hibernate一对多。
List<DispatchInfo> dispatchInfo = dispatchService.findByAll();
获取全部数据,已经获取到了。debug的时候可以看到数据
但是下一步for (int i = 0; i < dispatchInfo.size(); i++) 就进不去了
后来试了一下
System.out.println(dispatchInfo.size());
System.out.println(dispatchInfo.get(0).get*);也不行
跟死循环一样 输不出东西。卡在那。。。
有没有人知道是什么情况的。。。谢谢。。。
...全文
115 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
toto71229 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 cw329103272 的回复:]

你什么版本的hibernate hibernate自动生成实体类的时候 不是会有个对应实体类的配置文件
[/Quote]

是用注解的
@ManyToOne(cascade={CascadeType.ALL})
@JoinColumn(name="INFOID")
这种的。。。公司里边用这种的 跟着用。。。
cw329103272 2011-08-23
  • 打赏
  • 举报
回复
你什么版本的hibernate hibernate自动生成实体类的时候 不是会有个对应实体类的配置文件
toto71229 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lee511411973 的回复:]

你确定在这一句取到的dispatchInfo不为空吗?
List<DispatchInfo> dispatchInfo = dispatchService.findByAll();
如果不为空,dispatchInfo.size()应该有值的才对啊。
实在不行你多帖点代码出来,好分析啊。
[/Quote]

Model类贴出来了。。。看能不能发现问题。。。
toto71229 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cw329103272 的回复:]

你配置文件 配置了一对多关系?
[/Quote]

DispatchInfo类
private String infoId;这个的get/set我就不发了
private List<DispatchModule> dispatchModule;
@OneToMany(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
@JoinColumn(name="INFOID")
public List<DispatchModule> getDispatchModule() {
return dispatchModule;
}
public void setDispatchModule(List<DispatchModule> dispatchModule) {
this.dispatchModule = dispatchModule;
}

DispatchModule类
private String moduleId;这些的get/set我就不发了
private String moduleName;
private Date date;
private String moduleStatus;
private DispatchInfo dispatchInfo;
@ManyToOne(cascade={CascadeType.ALL})
@JoinColumn(name="INFOID")
public DispatchInfo getDispatchInfo() {
return dispatchInfo;
}
public void setDispatchInfo(DispatchInfo dispatchInfo) {
this.dispatchInfo = dispatchInfo;
}

不知道这样配会不会错,插入数据的时候是可以的。。。
cw329103272 2011-08-23
  • 打赏
  • 举报
回复
你配置文件 配置了一对多关系?
lee511411973 2011-08-23
  • 打赏
  • 举报
回复
你确定在这一句取到的dispatchInfo不为空吗?
List<DispatchInfo> dispatchInfo = dispatchService.findByAll();
如果不为空,dispatchInfo.size()应该有值的才对啊。
实在不行你多帖点代码出来,好分析啊。

cw329103272 2011-08-23
  • 打赏
  • 举报
回复
List<DispatchInfo> dispatchInfo= new ArrayList<DispatchInfo>();
dispatchInfo=dispatchService.findByAll();
如果你方法是返回LIST
dispatchInfo=(ArrayList<DispatchInfo>)dispatchService.findByAll();


for(DispatchInfo df : dispatchInfo)
{
system.out.print(df.getXX)
}


试试。
toto71229 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cw329103272 的回复:]

用FOR遍历, 有实体接收 直接用实体点属性。
[/Quote]

对了 情况跟这个帖说的一样 不过他的也没人回答。。。
http://topic.csdn.net/u/20080618/10/2c35c83e-ac0c-447b-a586-dc637c4b3079.html

debug的话 会跳到
the source attachment does not contain the source for the file NativeMethodAccessorImpl.class.
toto71229 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cw329103272 的回复:]

用FOR遍历, 有实体接收 直接用实体点属性。
[/Quote]

不行的for (int i = 0; i < dispatchInfo.size(); i++)走到这一步就没了 进不了循环
想直接取第一个用dispatchInfo.get(0)也不行
而且不报错 后台什么都没打出来 跟死循环一样。。。
cw329103272 2011-08-23
  • 打赏
  • 举报
回复
用FOR遍历, 有实体接收 直接用实体点属性。
toto71229 2011-08-23
  • 打赏
  • 举报
回复
好吧。。。问题解决了。。。
弄了半天~ 最后发现原来是tomcat部署的缓存的问题。。。重启myeclipse,重新部署tomcat后就可以了~
原来一直都没错。。。折腾了半天。。。

还是谢谢各位的帮忙~

81,095

社区成员

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

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