`
梦里天涯路
  • 浏览: 20488 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

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

阅读更多
当调用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的两个对象呢?
分享到:
评论
3 楼 yfddht1573 2008-05-05  
梦里天涯路 写道


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

那就不用返回一个对象

     换成
 
List list = session.load(Sgroup.class, 5); 
然后再foreach出来就OK了... 

2 楼 daimon 2007-08-10  
好久没用Hibernate了,如果直接JDBC的话,那就用游标,将取到的对象放在对象数组中就行了
1 楼 梦里天涯路 2007-08-09  
不好意思,这句打措了:group = (Sgroup) session.load(Sgroup.class, 1);
应该是    group = (Sgroup) session.load(Sgroup.class, 5);
查了些书籍,上面都写着用session.load()方法可以返回一个对象,可是当你表和其他的表关联起来的时候,返回的就不只是一个对象了!如本例!

相关推荐

    Spring-Reference_zh_CN(Spring中文参考手册)

    6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点实施 7.2.3. AspectJ切入点表达式 7.2.4. 便利的切入...

    springmybatis

    查询出列表,也就是返回list, 在我们这个例子中也就是 List<User> , 这种方式返回数据,需要在User.xml 里面配置返回的类型 resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该是我们自己配置的 ...

    ASP3《高级编程》(第一部分)

    3.3 ASP的Application对象和Session对象 83 3.3.1 ASP的Application对象成员概述 84 3.3.2 ASP的Session对象成员概述 85 3.3.3 使用Application和Session的事件 86 3.3.4 活动中的ASP Application对象 89 3.3.5...

    ASP3《高级编程》(第二部分)

    3.3 ASP的Application对象和Session对象 83 3.3.1 ASP的Application对象成员概述 84 3.3.2 ASP的Session对象成员概述 85 3.3.3 使用Application和Session的事件 86 3.3.4 活动中的ASP Application对象 89 3.3.5...

    DWR.xml配置文件说明书(含源码)

    这有点向java中的import语句,多数类在使用之前需要引入,但引入了类并不意味着这些在使用,每个creator和converter需要有个id属性来允许以后进行引用. 配置文件的allow部分定义哪些类可以建立和转换,每个被准许的类都...

    ssh(structs,spring,hibernate)框架中的上传下载

     此外lazy="true"说明地返回整个Tfile对象时,并不返回fileContent这个字段的数据,只有在显式调用tfile.getFileContent()方法时才真正从数据库中获取fileContent的数据。这是Hibernate3引入的新特性,对于包含重量...

    freemarker总结

    上面的语法格式中,sequence就是一个集合对象,也可以是一个表达式,但该表达式将返回一个集合对象,而item是一个任意的名字,就是被迭代输出的集合元素.此外,迭代集合对象时,还包含两个特殊的循环变量: item_index:...

    vcg(验证码控件)

    protected void Page_Load(object sender, EventArgs e) { CallBack = this.ClientScript.GetCallbackEventReference(Vcg1, “message”, “ShowImage”, “context”, “OnError”, true);...

    asp.net知识库

    如何解决ACCESS中SELECT TOP语句竟然返回多条记录的问题? Asp.net 利用OleDb的GetOLEDBSchemaTable方法得到数据库架构信息 用于 Visual Studio .Net 的 IBM DB2 开发外接程序 第2章 并发操作的一致性问题 (2) Using...

    C#编程经验技巧宝典

    100 <br>0158 如何将二进制数转换为十六进制数 100 <br>0159 如何实现0~9之间随机整数 101 <br>0160 如何实现0~1之间随机数 101 <br>0161 如何返回数字的绝对值 101 <br>5.2 控件数据处理...

Global site tag (gtag.js) - Google Analytics