【发布时间】:2011-02-11 17:31:44
【问题描述】:
我正在使用 Hibernate 选择若干 (x) 个实体 Foo。每个 foo 都有一对多的集合 bar 和 baz 设置为延迟获取。我需要为每个 foo 填充 bar 和 baz,所以我绝对不希望每个集合都发布一个子选择(2 * x + 1 个选择)。
但是,我也不一定要在两者上都设置 setFetchMode(FetchMode.JOIN),因为这将返回笛卡尔积 (bar x baz)。此外,如果我将 foo 和 bar 定义为列表,我将收到重复的项目。我可以发布两个标准:
List<Foo> foos;
foo = session.createCriteria(Foo.class).setFetchMode("bar", FetchMode.JOIN).list();
foo = session.createCriteria(Foo.class).setFetchMode("baz", FetchMode.JOIN).list();
但代码看起来相当草率。看起来第一个查询是不必要的。有没有更简洁的方法来获取 bar 和 baz?
【问题讨论】: