亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用版本作為部分主鍵,如何根據其 id 獲取實體的最新版本?

使用版本作為部分主鍵,如何根據其 id 獲取實體的最新版本?

鳳凰求蠱 2021-12-01 18:56:36
我有一個由 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個贊

我會去子查詢。這個想法是。

  1. 使用某些 ID 查找 Banana 的最大版本

  2. 使用該 ID 查找整個 Banana 對象并找到版本。

select b from Banana b where b.version = 
     (select max(bb.version) from Banana bb where bb.id = b.id)


查看完整回答
反對 回復 2021-12-01
  • 1 回答
  • 0 關注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號