gpt4 book ai didi

父级也限制子级集合的 hibernate setMaxResult

转载 作者:行者123 更新时间:2023-12-04 06:05:19 25 4
gpt4 key购买 nike

我有一个带有 @ManyToMany(fetch=FetchType.EAGER) 子集合的父实体。

我只需要加载我找到的父实体的第一条记录,因此我使用以下条件加载它:

session.createCriteria(Parent.class).setMaxResult(1).uniqueResult();

工作正常,但限制也适用于子集合,这是非常糟糕的。

我怎样才能只获得 parent 的第一条记录,而获得其 child 的所有记录?

谢谢

最佳答案

只需将 child 收藏标记为 fetch = FetchType.LAZY ,不要在查询中获取它,并在必要时在查询后初始化集合:

Parent p = (Parent) session.createCriteria(Parent.class).setMaxResult(1).uniqueResult();
// if necessary:
Hibernate.initialize(p.getChildren());

如果您真的希望将关联保持为预先获取(这是一个坏主意,IMO),则只需在查询中加载父级的 ID,然后获取父级:
Long parentId = (Long) session.createCriteria(Parent.class)
.setProjection(Projections.id())
.setMaxResult(1)
.uniqueResult();
Parent p = session.get(Parent.class, parentId);

关于父级也限制子级集合的 hibernate setMaxResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8430965/

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