JPQL得出列与现在之间的天数差异

时间:2019-01-30 10:09:05

标签: postgresql hibernate spring-boot jpql

我正在Spring Boot应用程序中使用hibernate和jpa。 我有一个具有2列的休眠实体,type(字符串)和date(LocalDate)。

我想选择所有列以及日期列与现在之间的天数差。

我在PostgreSQL中成功:select date, date - current date from table;

我正在使用扩展JpaRepository的接口。到目前为止,我已经成功地通过@Query注释插入了新查询。 我无法弄清楚如何选择我的列以及包含jpql中天数差异的列。

亲切的问候,

2 个答案:

答案 0 :(得分:1)

实际上,您可以使用查询创建器。您必须创建一个新实体,该实体的列与原始表的列相同,此外还要计算日期列与现在之间的差额。您必须注意哪种日期类型是您的列。

以我的经验,只有java.util中的Date可以用于与CURRENT_DATE的差异(我可能是错的)。

public List<NewEntity> getTest() {
String queryStr = "select new com.entity.NewEntity(n.type, n.date - CURRENT_DATE as 
time) from Table as n"
TypedQuery<PunteInspectieTimpRamas> query = entityManager.createQuery(queryStr, 
NewEntity.class);

return query.getResults()

}

答案 1 :(得分:0)

不确定您可以使用jpql执行此操作。 但是您可以直接在存储库中将查询用作本机查询:

@Query(value = "SELECT ... ", nativeQuery = true) ClassToReturn methodName();

请参阅https://www.baeldung.com/spring-data-jpa-query