我有一个由 MySQL 数据库支持的 REST API,它具有多种实体类型,所有实体类型都有一个复合主键:@Embeddablepublic class EntityId { private int id; private int version;}对于诸如 /bananas 之类的端点,我想返回每个香蕉的最新版本。鉴于以下情况,我可以退回所有香蕉的所有版本:("SELECT b FROM BananaEntity b").getResultList();其中产生:[ { entityId: { id: 1, version: 1 }, name: "Banana A" }, { entityId: { id: 1, version: 2 }, name: "Banana A" }, { entityId: { id: 1, version: 3 }, name: "Banana A" }, { entityId: { id: 2, version: 1 }, name: "Banana B" }, { entityId: { id: 2, version: 2 }, name: "Banana B" },]我怎样才能只检索每个香蕉的最新版本,所以我只能看到香蕉 1 的 V3 和香蕉 2 的 V2?我能够找到获取 id/version 对所需的查询:select id, max(version) from action group by id但是我还没有弄清楚如何获得整个 Banana 实体。我应该改用 Criteria API 吗?有没有更好的方法来版本我的实体?谢谢。
1 回答
守着一只汪
TA贡献1872条经验 获得超3个赞
我会去子查询。这个想法是。
使用某些 ID 查找 Banana 的最大版本
使用该 ID 查找整个 Banana 对象并找到版本。
select b from Banana b where b.version = (select max(bb.version) from Banana bb where bb.id = b.id)
添加回答
举报
0/150
提交
取消