У меня есть REST API, поддерживаемый БД MySQL с несколькими типами сущностей, каждый из которых имеет составной первичный ключ:
@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"
},
]
Как я могу вместо этого получить только последнюю версию каждого банана, такЯ вижу только V3 Banana 1 и V2 Banana 2?Мне удалось найти запрос, который мне нужен, чтобы получить пары id / version:
select id, max(version) from action group by id
Но я еще не выяснил, как получить все сущности Banana.Должен ли я вместо этого использовать Criteria API?Есть ли лучший способ для версии моих сущностей?Спасибо.