簡體   English   中英

JPA選擇日期低於參數的實體

[英]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:00until的值是2019-08-24T10:00:00.000+02:00 (七天前)

但是,該對象仍從查詢中返回。

我正在使用PostgreSQL 9.6

並非每個JDBC驅動程序都支持它。 您可以使用以下解決方案之一:

  1. 使用時間戳而不是ZonedDateTime。

  2. 使用正確的驅動程序並遵循其配置要求。 例如,對於Oracle,您可能需要指定轉換器:

    @Convert(converter=OracleZonedDateTimeSeriliazer.class)
    private ZonedDateTime date = ZonedDateTime.now(ZoneId.of("UTC"));

對於其他數據庫,您可能需要實現這樣的轉換器並通過@Convert指定它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM