Hibernate Criteria 获取每个父实体的一对多子实体的最大 ID

Hibernate Criteria to get maximum ID of the child of one-to-many for each parent entity

我有两个类:

public class DocumentRecord {  

    @Column(name = "id")
    private Long id;

    @OneToMany(...)
    @JoinColumn(name = "document_id")
    private final List<DocumentHistRecord> history = new ArrayList<>();

    ... other fields
}

public class DocumentHistRecord {

    @Id
    @Column(name = "id")
    private Long id;

    ... other fields
}

我想要的是将 DocumentHistRecord 的最大 ID 附加到每个文档。每个文档在其历史记录中至少有一个 DocumentHistRecord。

如何使用 Hibernate Criteria 在 Hibernate 4.3.7 中实现这一点 API?

这是表格示例和我想要的结果:

Table DocumentRecord:      Table DocumentHistRecord
id                         id  |  documentId
--                         -----------------
1                          1   |  1
2                          2   |  1
3                          3   |  1
4                          4   |  2
                           5   |  3
                           6   |  3
                           7   |  4
                           8   |  4

结果将是:

id (from DocumentHistRecord table)
--
3
4
6
8

提前感谢您的回答。

看起来像这样:

final Criteria criteria = session.createCriteria(DocumentRecord.class);
criteria.createCriteria("history" ,"h");


ProjectionList pl = Projections.projectionList();
pl.add(Projections.groupProperty("id"));
pl.add(Projections.max("h.id"));
criteria.setProjection(pl);
List res = criteria.list();