2017-02-12 17 views
2

Мой POJOMongoRepository запрос для между датами

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

Я планирую использовать как следующее.

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

Есть ли способ я могу поставить следующий запрос к вышеупомянутым query аннотацию и как я могу сделать больше и меньше, чем логика

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

Данные Spring MongoDB не имеет встроенной поддержки для 'ZonedDateTime', только' LocalDateTime'. Использование 'ZonedDateTime' требует [настраиваемого конвертера] (http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mapping-explicit-converters) для сохранения часового пояса. – mp911de

ответ

2

Вы можете попробовать следующие несколько способов.

Без запроса аннотация.

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

С аннотацией запроса.

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