我有一个由 MySQL 数据库支持的 REST API,它具有多种实体类型,所有实体类型都有一个复合主键:
@Embeddable
public 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 吗?有没有更好的方法来版本我的实体?谢谢。
守着一只汪
相关分类