gpt4 book ai didi

hibernate - 如何在 Hibernate 查询语言中使用 fetch

转载 作者:行者123 更新时间:2023-12-02 22:52:33 26 4
gpt4 key购买 nike

这不是技术问题,只是我没有得到的语法更正。

我有 hibernate 3.6 并且我已经在 xml 文件中映射了我的模型类。这些 xml 文件中提到的默认类型是这些类将被延迟引入。由于它是硬编码的,我无法改变这种行为。

我想要带来的模型看起来像这样。

class A {
private int id;
private B b;
private C c;
}

在我的例子中,类 B 和 C 需要立即加载。

所以我这样写了查询。

from A.class.getName() a where a.id = :id;

在此查询中,我将 fetch 关键字放在哪里。下面一个抛出错误:

from A.class.getName a fetch where a.id = :id;

在互联网上的示例中,他们对查询进行一些连接,然后获取如下所示的一些值:

from Cat as cat inner join fetch cat.mate left join fetch cat.kittens

但是,就我而言,所有连接都是在 xml 文件内部完成的。我不必在查询中进行联接。那么我应该在哪里放置“fetch”关键字来声明同时非延迟地启动所有链接的类(B 和 C)。

注意:

  1. 我无法使用 criteria api,因为我不想在我的项目中添加额外的 jar。

最佳答案

语法是

select a from A a
left join fetch a.b
left join fetch a.c
where a.id = :id

the documentation的相关部分:

A "fetch" join allows associations or collections of values to be initialized along with their parent objects using a single select. This is particularly useful in the case of a collection. It effectively overrides the outer join and lazy declarations of the mapping file for associations and collections. See Section 20.1, “Fetching strategies” for more information.

from Cat as cat
inner join fetch cat.mate
left join fetch cat.kittens

关于hibernate - 如何在 Hibernate 查询语言中使用 fetch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26937789/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com