У нас есть таблица MySQL
id | username | state | action
1 | Ringo | CA | sell
2 | Paul | CA | sell
3 | John | CA | buy
4 | Ringo | CA | sell
5 | Ringo | MA | sell
И нам нравится получать последние действия «продать» каждого пользователя в «CA» (поэтому в этом примере для Ringo нам нравится получать запись № 4, а не запись № 1).
В MySQL мы можем сделать что-то подобное (держу пари, это можно улучшить):
select * from actions where id in (
select max(id) from actions
where action = "sell"
and state = "CA"
group by username
)
Мы пытались сделать это в CrudRepository
Спрингом несколькими способами, но, похоже, никто не делает то, что нам нравится.
Вот некоторые из вещей, которые мы попробовали:
public interface ActionsRepository extends CrudRepository<ActionEntry, Long>{
List<ActionEntry> findDistinctUserNameByStateAndActionOrderByIdDesc(String state, String action);
List<ActionEntry> findTopByStateAndActionOrderByIdDesc(String namespace, String action);
Есть ли способ сделать это в JPA?