[英]JPA select entities with date below parameter
我試圖選擇日期字段的值低於給定參數的所有實體。 但是,我的代碼似乎不起作用。
SomeEntity.java
@Entity
public class SomeEntity {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private ZonedDateTime date = ZonedDateTime.now(ZoneId.of("UTC"));
}
SomeEntityRepository.java
public interface SomeEntityRepositoryextends CrudRepository<SomeEntity, Long> {
/**
* Get all SomeEntity created before :until
*/
@Query("Select e from SomeEntity e where e.date < :until")
List<SomeEntity> findAllUntil(@Param("until") ZonedDateTime until);
}
我的問題是這樣的:
我將有一個SomeEntity
對象,其日期為2019-08-31T10:00:00.000+02:00
, until
的值是2019-08-24T10:00:00.000+02:00
(七天前)
但是,該對象仍從查詢中返回。
我正在使用PostgreSQL 9.6
並非每個JDBC驅動程序都支持它。 您可以使用以下解決方案之一:
使用時間戳而不是ZonedDateTime。
使用正確的驅動程序並遵循其配置要求。 例如,對於Oracle,您可能需要指定轉換器:
@Convert(converter=OracleZonedDateTimeSeriliazer.class)
private ZonedDateTime date = ZonedDateTime.now(ZoneId.of("UTC"));
對於其他數據庫,您可能需要實現這樣的轉換器並通過@Convert
指定它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.