Hibernate:使用子选择和左外连接执行条件查询?
我可以使用子选择和左外连接执行条件查询吗?
例如,我有 A 1-many B 1-many C。
使用 Criteria.createAlias ("b", "b", Criteria.LEFT_JOIN) 我可以执行 Left Outer 连接。
使用 Criteria.setFetchMode ("b", org.hibernate.FetchMode.DEFAULT) 我可以使用默认的获取策略执行 Join 。我认为在 AB 和 BC 中设置 @org.hibernate.annotations.FetchMode.SUBSELECT 就足够了(是吗?)。
问题1:为什么org.hibernate.FetchMode没有SUBSELECT选项,而org.hibernate.annotations.FetchMode有?
问题 2:我可以使用 Sub-Select AND Left-Outer join 执行 Criteria 查询吗?
Can I perform a Criteria query with Sub-Select AND Left-Outer join?
For example, I have A 1-many B 1-many C.
With Criteria.createAlias ("b", "b", Criteria.LEFT_JOIN) I can perform Left Outer join.
With Criteria.setFetchMode ("b", org.hibernate.FetchMode.DEFAULT) I can perform Join with the default fetching strategy. I assume that having set @org.hibernate.annotations.FetchMode.SUBSELECT in both A.B and B.C is enough (is it?).
Question 1: Why does org.hibernate.FetchMode not have SUBSELECT option, whereas the org.hibernate.annotations.FetchMode does?
Question 2: Can I perform a Criteria query with Sub-Select AND Left-Outer join?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Criteria 和 org.hibernate.FetchMode.SELECT 不执行任何操作。 Criteria 的唯一选项是 org.hibernate.FetchMode.JOIN。我手动对 Criteria 结果进行延迟初始化:
Criteria and
org.hibernate.FetchMode.SELECT
does nothing. The only option for Criteria isorg.hibernate.FetchMode.JOIN
. I do lazy initialization for Criteria results manually:org.hibernate.FetchMode
在不同的名称下具有相同的选项,SELECT
。org.hibernate.FetchMode
has the same option under a different name,SELECT
.