Abfrage mit sort () und limit () in der Spring Repository-Schnittstelle

Ich bin neu in Spring Data mit MongoDB und möchte eine automatisch generierte Abfragemethode in meiner MongoRepository-Erweiterungsschnittstelle haben, die das Filtern, Sortieren und Begrenzen erfordert.

Die Abfrage sieht folgendermaßen aus:

<code>// 'created' is the field I need to sort against

find({state:'ACTIVE'}).sort({created:-1}).limit(1)
</code>

Die Repository-Oberfläche sieht folgendermaßen aus:

<code>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();

    ...
}
</code>

Ich weiß, dass man einer Abfragemethode ein Sortierargument hinzufügen kann, um eine Sortierung zu erhalten, aber das Problem besteht darin, die Ergebnisse auf nur ein einziges Objekt zu beschränken. Ist dies möglich, ohne ein benutzerdefiniertes JobRepositoryImpl schreiben zu müssen?

Vielen Dank

Bearbeiten:

Beispiel für was ich suche:

<code>@Query("{ state:'ACTIVE', $orderby: {created:-1}, $limit:1 }")
Job findOneActiveOldest();
</code>

oder

<code>@Query("{ state:'ACTIVE' }")
@Sort("{ created:-1 }")
@Limit(1)
Job findOneActiveOldest();
</code>

Aber das funktioniert offensichtlich nicht :(

Antworten auf die Frage(2)

Ihre Antwort auf die Frage