Hibernate 也在父限制子集合上休眠setMaxResult

Hibernate 也在父限制子集合上休眠setMaxResult,hibernate,hibernate-criteria,Hibernate,Hibernate Criteria,我有一个父实体,其子集合为@manytomy(fetch=FetchType.EAGER) 我只需要加载我找到的父实体的第一条记录,所以我使用以下条件加载它: session.createCriteria(Parent.class).setMaxResult(1).uniqueResult(); 工作很好,但限制也适用于儿童收集,这是非常糟糕的 我如何才能只获取父对象的第一个记录,而获取其子对象的所有记录 谢谢只需将子集合标记为fetch=FetchType.LAZY,不在查询中获取它,并在查

我有一个父实体,其子集合为@manytomy(fetch=FetchType.EAGER)

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

session.createCriteria(Parent.class).setMaxResult(1).uniqueResult();
工作很好,但限制也适用于儿童收集,这是非常糟糕的

我如何才能只获取父对象的第一个记录,而获取其子对象的所有记录


谢谢

只需将子集合标记为
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);

我刚碰到这个。这是维德,有没有更好的办法?我现在面对它