without type query property found for example data spring-data mongodb-java

spring data - type - Consulta con sort() y limit() en la interfaz de Spring Repository



spring boot jpa (2)

Qué hay de malo en:

public interface JobRepository extends MongoRepository<Job, String> { @Query("{ state : ''ACTIVE'' }") Page<Job> findOneActiveOldest(Pageable pageable); }

y usándolo:

// Keep that in a constant if it stays the same PageRequest request = new PageRequest(0, 1, new Sort(Sort.Direction.DESC, "created")); Job job = repository.findOneActiveOldest(request).getContent().get(0);

Soy nuevo en Spring Data con MongoDB y me gustaría tener un método de consulta generado automágicamente dentro de mi interfaz de extensión MongoRepository que requiere filtrado, clasificación y limitación.

La consulta se ve así:

// ''created'' is the field I need to sort against find({state:''ACTIVE''}).sort({created:-1}).limit(1)

La interfaz del repositorio se ve así:

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(); ... }

Sé que se puede agregar un argumento de clasificación a un método de consulta para obtener la clasificación, pero el problema es limitar los resultados a un solo objeto. ¿Se puede hacer esto sin tener que escribir un JobRepositoryImpl personalizado?

Gracias

Editar:

Ejemplo de lo que estoy buscando:

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

o

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

Pero esto obviamente no funciona :(


Solo agregando una corrección a la respuesta de Oliver, es Direction.DESC y no Directions.DESC y el orden de los parámetros es incorrecto.

Cambio :

PageRequest request = new PageRequest(0, 1, new Sort("created", Directions.DESC));

a:

PageRequest request = new PageRequest(0, 1, new Sort(Direction.DESC, "created"));