浏览 3792 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-08-09
比如: 数据库如下: 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的两个对象呢? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-08-09
不好意思,这句打措了:group = (Sgroup) session.load(Sgroup.class, 1);
应该是 group = (Sgroup) session.load(Sgroup.class, 5); 查了些书籍,上面都写着用session.load()方法可以返回一个对象,可是当你表和其他的表关联起来的时候,返回的就不只是一个对象了!如本例! |
|
返回顶楼 | |
发表时间:2007-08-10
好久没用Hibernate了,如果直接JDBC的话,那就用游标,将取到的对象放在对象数组中就行了
|
|
返回顶楼 | |
发表时间:2008-05-05
梦里天涯路 写道 Sgroup group = (Sgroup) session.load(Sgroup.class, 5); 那就不用返回一个对象 换成 List list = session.load(Sgroup.class, 5); 然后再foreach出来就OK了... |
|
返回顶楼 | |