`
ithero
  • 浏览: 146061 次
社区版块
存档分类
最新评论

久违的问题.hibernate getxx()集合出现的延迟加载失效.

    博客分类:
  • J2EE
阅读更多

主要映射如下:

表A: USER_INFO

表B(中间表):USER_GROUP

表C:GROUPS

多对多关联关系映射片段:注意,该映取消了中间表user_group的映射.

用户表A:user_info.hbm.xml

java 代码
  1. < set name="userGroups" table="USER_GROUPS" lazy="true" inverse="false" cascade="save-update" batch-size="5">   
  2.   < key>   
  3.           < column name="USER_ID" length="40" not-null="true"/>   
  4.     < /key>   
  5.     < many-to-many class="com.xx.domain.UserGroups" column="GROUP_ID" outer-join="auto"/>               
  6. < t>  

组织表C : groups.hbm.xml

java 代码
  1. < set name="userInfo" table="USER_GROUP" lazy="true" inverse="true" cascade="save-update" batch-size="5">   
  2.    < key>   
  3.      < column name="GROUP_ID" length="40"/>   
  4.    < /key>   
  5.     <  many-to-many class="com.xxx.UserInfo" column="USER_ID"/>         
  6.   <  t>  

程序片段如下:

java 代码
  1. UserInfo userInfo = userDao.get("123456");   
  2.   
  3. Groups groups = new Groups();   
  4.   
  5. groups.getUserInfos().add(userInfo ); //程序执行到这句.把UserInfo表中,所有的set集合全加载出来了.但是那些关联映射我都相应的加了lazy="true"   
  6. 执行到上面的groups.getUserInfos.add(userInfo);   

打印出来一大堆sql.仔细一看,全是userInfo的其它set集合.显然这是存在问题的
请问大家,这种情况主要是由什么引起的.映射错误吗?谢谢

分享到:
评论
5 楼 李超群 2007-11-12  
延迟加载不代表不加载呀。要不然hibernate如何维护内存和数据库的同步呢。
4 楼 zhangfengsimon 2007-11-12  
laiseeme 写道
lz这么查有问题吧Groups groups = new Groups();
不得把group用hibernate取出来么?
groups.getUserInfos()楼上说的对
3 楼 laiseeme 2007-11-12  
lz这么查有问题吧Groups groups = new Groups();
不得把group用hibernate取出来么?
2 楼 kyo100900 2007-11-12  
因为你设置的是set映射,所以当程序执行到groups.getUserInfos.add(userInfo);时,我想Hibernate有必要将记录集取出来,然后判断是否有重复的吧。
1 楼 ithero 2007-11-08  
顺便向robbin提个bug.现在这个代码过滤存在问题啊.如果
&lt;set...&gt;.代码过滤起就把&lt; 相关的就全删除掉了.弄得我们现在需要在之间加个空格才行

相关推荐

    模拟ATM机的简单代码

    2.setXX/getXX方法 3.public void saveMoney(int money) 存钱的方法 4.public boolean takeMoney(int money) 取钱的方法,如果余额为,返回false,否则返回true 5.public boolean checkPw(int pw) 验证密码...

    Liu_Yan_Ban.zip_liujsp_seliulang con

     对应的getXX(),setXX()方法 User.java 属性:  private String username //用户名  private String password //密码 方法:  对应的getXX(),setXX()方法   DBConn.java 属性:  Connection con=null //连接 ...

    USB3000kEY 加密狗 自动读取工具JS

    自动读取加密狗信息到local storage 1.引入UKEYUtil.js ...只有在调用getXX方法可取得相应的值 //SM2国密算法 getKeyID() 唯一ID getUserName() 用户信息 getRnd() 加密字符串 getSm2EncData() 密文

    指定模块指定分发例程的原始地址

    "原始地址"指的是该分发例程在内存中的初始位置,这个地址在系统加载模块时被确定,并且在运行时可能被用来进行动态调用或钩子(Hook)技术。 标题"指定模块指定分发例程的原始地址"所涉及的核心概念是: 1. **...

    daima.rar_return_wage_电费管理

    其中,成员函数setXX用于设置工资的各分项数据,成员函数getXX用于获取工资各分项数据,xx代表Wage,Subsidy等数据成员。 实发工资=Wage+Subsidy-Rent-WaterFee-ElecFee 编写程序完善该类的设计,并写出测试该类成员...

    commons-beanutils-1.8.3 API.chm

    一般情况下,在写一个Bean时,我们都要写上getXX和setXX方法,这样在读取和写入对象属性值时很方便,但有些场合下,比如动态访问Java对象属性时,上面的写法就不合适了,这样的一些场景例如: 1、当创建脚本语言与...

    AndroidJava命名规范.doc

    - 特殊前缀用来标识方法的功能,如`onCreate()`、`run()`、`initView()`、`isXX()`、`checkXX()`、`getXX()`、`processXX()`、`displayXX()`、`saveXX()`、`resetXX()`、`clearXX()`、`removeXXX()`和`drawXXX()`。...

    JavaScript基本编码模式小结

    - 对于函数参数,可以利用数组或对象字面量传递一组值,例如`function getXX(index){ return ['aa', 'bb', 'xx', 55, 'xxb'](index); }`。 3. **正则表达式**: - 通常情况下,使用正则字面量 `/someting/ig` 比...

    JavaBean在JSP中的应用.ppt

    对于布尔类型的属性,会有`isXx()`和`getXx()`的形式。 7.1.2 编写JavaBean 编写JavaBean就像编写普通的Java类,但需要遵循特定的命名约定。成员变量应为私有的(private),并提供公共的getter和setter方法。例如...

    APK解析(版本、包名、导出资源图片、证书相关信息、签名认证、权限、Activity等)

    这个工具前后用了好多天的时间查阅资料并不断修改才完成。本工具可以用于读取apk包的大量信息,无其他依赖。...需要判断apkAnalysis是否为null,为null表示读取失败,不为null时即可调用getXX()获取数据

    Jquery+Spring3+Struts2+Ibatis3框架源代码工程(含权限)

    它是用来对Java Bean来进行处理的。一般情况下,在写一个Bean时,我们都要写上getXX和setXX方法,这样在读取和写入对象属性值时很方便 博文链接:https://atgoingguoat.iteye.com/blog/1600676

    实例讲解Android自定义控件

    `declare-styleable`标签用于声明一个自定义的样式属性集合,而`attr`标签则用来定义具体的属性,包括属性名称、数据格式(例如字符串、尺寸、颜色等)。 接下来,我们需要实现自定义控件。在这个例子中,我们创建...

    android的定位功能的实现

    它封装的都是 getxx 的方法,例如 getLatitude、getLongitude、getAltitude、getSpeed 等。 其次,LocationManager 类是用来取得位置服务,设置 provider,设定位置变化等。它有多个方法,例如 ...

Global site tag (gtag.js) - Google Analytics