Hibernate:使用子选择和左外连接执行条件查询?

发布于 2024-08-29 04:14:40 字数 558 浏览 8 评论 0原文

我可以使用子选择和左外连接执行条件查询吗?

例如,我有 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

往日 2024-09-05 04:14:40

Criteria 和 org.hibernate.FetchMode.SELECT 不执行任何操作。 Criteria 的唯一选项是 org.hibernate.FetchMode.JOIN。我手动对 Criteria 结果进行延迟初始化:

for (Entity e : result) {
 Hibernate.initizalize(e.getProperty());
}

Criteria and org.hibernate.FetchMode.SELECT does nothing. The only option for Criteria is org.hibernate.FetchMode.JOIN. I do lazy initialization for Criteria results manually:

for (Entity e : result) {
 Hibernate.initizalize(e.getProperty());
}
装纯掩盖桑 2024-09-05 04:14:40

org.hibernate.FetchMode 在不同的名称下具有相同的选项,SELECT

org.hibernate.FetchMode has the same option under a different name, SELECT.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文