2017-02-12 454 views
2

之間MongoRepository查詢日期

我的POJO

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