我有一個由 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條經驗 獲得超4個贊
我會去子查詢。這個想法是。
使用某些 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
提交
取消