论坛首页 入门技术论坛

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

浏览 3770 次
精华帖 (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 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics