2008-01-01
hibernate的关联奇怪的地方
关键字: hibernate1. 在一对多的双向关联里,如果通过关联直接取出对象,比如(这里默认关联lazy="false")
TestGroup father = (TestGroup) session.load(TestGroup.class,"402881ee16d8fc090116d8fc0b0b0001");List<TestGroup> children = father .getTestGroups();
以下设置是等价的:
<bag inverse="true" cascade="all" name="testGroups"fetch="subselect" lazy="false"><key column="fk_parent_id" /><one-to-many class="com.leo.domain.TestGroup" /></bag>
和
<bag inverse="true" cascade="all" name="testGroups"fetch="select" lazy="false"><key column="fk_parent_id" /><one-to-many class="com.leo.domain.TestGroup" /></bag>
如果是先取出一个集合,比如
List<TestGroup> fathers = session.createQuery("from TestGroup g where g.id in ('402881ee16d8fc090116d8fc0b0b0001', '402881ee173520760117352078ae0001')").list();// List<TestGroup> lists = father.getTestGroups();for (TestGroup g : fathers) {System.out.println("father name is: " + g.getName());List<TestGroup> children = g.getTestGroups();for (TestGroup c : children) {System.out.println("children name is : " + c.getName());}}
再通过关联
以下设置是等价的:
<bag inverse="true" cascade="all" name="testGroups"fetch="subselect" lazy="false"><key column="fk_parent_id" /><one-to-many class="com.leo.domain.TestGroup" /></bag>
和
<bag inverse="true" cascade="all" name="testGroups"fetch="join" lazy="false"><key column="fk_parent_id" /><one-to-many class="com.leo.domain.TestGroup" /></bag>
我看了控制台输出的SQL语句, 发现结果如我上面所说的那样,不知道对不对?
Hibernate的抓取策略真不明白啊。
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 91548 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最新评论
-
用Spring2.5和ICEFaces开 ...
哈哈,多谢翻译,正在研究这方面的东西呢,看了你的文章,深有帮助
-- by jzx19770812 -
【JSF专家Dennis Byrne】 ...
to Itian:窗口之间传数据..很简单啊.. 子窗口付值到父窗口: wind ...
-- by terryzhou -
【JSF专家Dennis Byrne】 ...
不错哦..可惜看到太晚..上面两个问题都自己解决了.. 特别是MAP那个..比较 ...
-- by terryzhou -
JSF+AJAX企业级开发之路— ...
引用实际上Sun除了Java语言本身外,没有什么特别成功的东西 别忘了Sun是 ...
-- by mkclawhammer -
JSF+AJAX企业级开发之路— ...
-- by yydxl






评论排行榜