Spring-Data / HQL:如何在LocalDate和LocalTime属性的查询中创建current_timestamp

时间:2017-07-20 14:17:54

标签: hibernate jpa spring-data spring-data-jpa

抱歉这个奇怪的头衔;不知道怎么形容这个。随意建议更正: - )

在我的JPA实体中,我具有以下属性(startTime可以为空):

private LocalDate startDate;
private LocalTime startTime;

是否可以构建一个查询,该查询可以将给定的LocalDateTime与这两个属性进行比较,但是可以动态组合或构建/创建一个由这两个独立属性组成的时间戳?

@Query( "SELECT t FROM Test t " +
        "WHERE " +
            "t.id = :testId " + 
            "AND ( " + 
                "t.startDate >= current_date() " + 
                "AND (t.startTime IS NULL OR t.startTime >= current_time()) " + 
            ")")
public Page<Test> findBySomething(@Param("testId") Long testId, Pageable pageable);

...这个当然不起作用,因为它比较分开。

我正在寻找的是

...AND new DatabaseDateOrWhatEver(t.startDate, t.startTime) >= current_timestamp...

我使用最新版本的postgresql和spring数据/ -jpa。

1 个答案:

答案 0 :(得分:0)

我认为你需要JPQL Datetime Functions

  

functions_returning_datetime:= CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP

     

datetime函数返回数据库服务器上当前日期,时间和时间戳的值。

@Query("SELECT t FROM Test t WHERE t.id = :testId AND ( " + 
                "t.startDate >= current_date " + 
                "AND (t.startTime IS NULL OR t.startTime >= current_time))")