Добавление сортировки в монго JSON @Query с репозиторием данных Spring - PullRequest
3 голосов
/ 13 октября 2011

Я хочу отсортировать результаты find, используя запрос mongo JSON и, прочитав и экспериментировав, я все еще не могу заставить его работать. Я получил PagingAndSortingRepository и могу использовать Sort() на findAll без проблем.

Класс репозитория

public interface ThingRepository extends PagingAndSortingRepository<Thing, ObjectId> {
    @org.springframework.data.mongodb.repository.Query("{ name:?0, $or : [ { state:'new' } , {state:'updated'} ] }")
    List<Device> findThingsInNewOrUpdatedState(String name);
}

Сервисный уровень

@Service
public class ThingService() {
    @Autowired private ThingRepository thingRepository;

    public List<Thing> getSortedThings() {
        return (List<Thing>)thingRepository.findAll(new Sort(Sort.Direction.DESC, Arrays.asList("dateModified")));
    }

    public List<Thing> getNewOrUpdatedThingsSorted() {
        return thingRepository.findThingsInNewOrUpdatedState(); // <-- this needs to be sorted
    }
}

Запрос переводится прямо в вызов mongoDb, который отлично работает

db.things.find({ name:'xxx', $or : [ { state:'new' }, {state:'updated'} ] })

и я знаю, что могу добавить sort() в обычном синтаксисе mongoDb, но не могу понять, как это сделать из Java / Spring Data. Он попытался добавить его в @Query, но он не работал, так как я думаю, что Spring просто выполняет find().

1 Ответ

5 голосов
/ 13 октября 2011

Вы должны иметь возможность просто добавить параметр Sort в метод запроса и, таким образом, динамически направить в экземпляры Sort, которые будут применены к запросу, определенному в @Query.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...