论坛首页 入门讨论版 Java

session.load()返回对象的引用问题?

浏览 1127 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2007-08-09
当调用session.load()发放返回的实际对象不止一个时应该如何分别取得每个对象的引用?

比如:
数据库如下:
table:Student
Sid Sname Sgroup
1 yang 5
2 yue 5
table :Sgroup
id name
5 ball
其中Student表中的Sgroup字段是Group表中的外键
Hibernate:
select
group0_.ID as ID1_1_,
group0_.NAME as NAME1_1_,
stu1_.SID as SID0_0_,
stu1_.SGROUP as SGROUP0_0_,
stu1_.SNAME as SNAME0_0_
from
student.dbo.Sgroup Sgroup0_
left outer join
student.dbo.Student Student1_
on Sgroup0_ .ID=Student1_ .SGROUP
where
Sgroup0_.ID=?

而这条语句的结果是: id name Sid Sname Sgroup
5 ball 1 yang 5
5 ball 2 yue 5
但是session.load()方法返回的是一个对象,虽然可以通过转型使其为Sgroup类型,但是在引用其值的时候就会抛出异常,
比如:
group = (Sgroup) session.load(Sgroup.class, 1);
...........................
System.out.println(group.getName());

产生如下异常
More than one row with the given identifier was found

对于这种情况应该如何引用所返回的两个Sgroup的两个对象呢?
   
时间:2007-08-09
不好意思,这句打措了:group = (Sgroup) session.load(Sgroup.class, 1);
应该是 group = (Sgroup) session.load(Sgroup.class, 5);
查了些书籍,上面都写着用session.load()方法可以返回一个对象,可是当你表和其他的表关联起来的时候,返回的就不只是一个对象了!如本例!
   
0 请登录后投票
时间:2007-08-10
好久没用Hibernate了,如果直接JDBC的话,那就用游标,将取到的对象放在对象数组中就行了
   
0 请登录后投票
时间:2008-05-05
梦里天涯路 写道


Sgroup group = (Sgroup) session.load(Sgroup.class, 5);

那就不用返回一个对象

换成
List list = session.load(Sgroup.class, 5); 
然后再foreach出来就OK了... 
   
0 请登录后投票
论坛首页 入门讨论版 Java

跳转论坛:
JavaEye推荐