2017-02-12 7 views
2

Mein pojoMongoRepository Abfrage für zwischen Terminen

public class PacketData implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @Id 
    private final String token = UUID.randomUUID().toString(); 

    private final ZonedDateTime arrived = ZonedDateTime.now(); 
} 

Ich plane, wie folgt zu verwenden.

@Query("?") 
List<PacketData> findPacketArrivedBetween(ZonedDateTime startDate, ZonedDateTime endDate); 

Gibt es eine Weise, die ich die folgende Abfrage auf die oben query Annotation setzen können und wie kann ich als mehr tun und weniger als Logik

Query query = new Query().addCriteria(Criteria.where("arrived").gte(startDate).lte(endDate)); 
+0

Springdaten MongoDB hat keine integrierte Unterstützung für 'ZonedDateTime', nur' LocalDateTime'. Die Verwendung von 'ZonedDateTime' erfordert einen [benutzerdefinierten Konverter] (http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mapping-explicit-converters), um die Zeitzone beizubehalten. – mp911de

Antwort

2

Sie folgende paar Möglichkeiten ausprobieren können.

Ohne Abfrage Annotation.

List<PacketData> findByArrivedBetween(ZonedDateTime startDate, ZonedDateTime endDate); 

Mit Abfrage Annotation.

@Query("{'arrived': {$gte: ?0, $lte:?1 }}") 
List<PacketData> findPacketArrivedBetween(ZonedDateTime startDate, ZonedDateTime endDate); 
Verwandte Themen