Я новичок в Spring Data с MongoDB и хотел бы иметь автоматически сгенерированный метод запроса внутри моего интерфейса расширения MongoRepository, который требует фильтрации, сортировки и ограничения.
Запрос выглядит так:
// 'created' is the field I need to sort against
find({state:'ACTIVE'}).sort({created:-1}).limit(1)
Интерфейс репозитория выглядит так:
public interface JobRepository extends MongoRepository<Job, String> {
@Query("{ state: 'ACTIVE', userId: ?0 }")
List<Job> findActiveByUserId(String userId);
// The next line is the problem, it wont work since
// it's not in the format @Query expects
@Query("find({state:'ACTIVE'}).sort({created:-1}).limit(1)")
Job findOneActiveOldest();
...
}
Я знаю, что можно добавить аргумент Sort к методу запроса, чтобы получить сортировку, но проблема заключается в ограничении результатов только одним объектом. Можно ли обойтись без написания собственного JobRepositoryImpl?
Спасибо
Редактировать:
Пример того, что я ищу:
@Query("{ state:'ACTIVE', $orderby: {created:-1}, $limit:1 }")
Job findOneActiveOldest();
or
@Query("{ state:'ACTIVE' }")
@Sort("{ created:-1 }")
@Limit(1)
Job findOneActiveOldest();
Но это явно не работает :(