gpt4 book ai didi

java - 如何构建 HQL 查询,即自动连接标记为 LAZY 的子表?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:29:32 24 4
gpt4 key购买 nike

我有一些实体:

  public class Album extends GenericAuditedEntity {

@OneToMany(fetch = FetchType.LAZY)
private Set<Item> itemSet = new HashSet<Item>();
}

当我像这样运行 HQL 时:em.createQuery("select a from Album a").getResults()

它产生许多 SQL 查询:一个用于从相册表中选择数据。像这样: select .... from Album_table;对每个获取的行进行一次查询,用于选择项目。像这样:选择 .... from Item_table iwhere i.Album_id = :Album_id;

但是当我运行 em.createQuery("选择 a.id, b.id来自专辑a左加入项目 i").getResults()

它产生一个 SQL 查询。但它的结果是一些参数的列表,我需要手动将其放入实体中。

如何自动构建带有连接的 HQL 并自动将结果放入实体?可能吗?

最佳答案

您需要使用 join fetch :

em.createQuery("select a.id, b.id from Album a left join fetch Item i ").getResults();

请注意,上面的链接详细描述了它有一定的副作用。

关于java - 如何构建 HQL 查询,即自动连接标记为 LAZY 的子表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1472122/

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