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

问题描述 投票:0回答:3

我在 Spring Boot 应用程序中使用 hibernate 和 jpa。 我有一个具有 2 列的休眠实体,

type
(字符串)和
date
(本地日期)。

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

我在 PostgreSQL 中成功了:

select date, date - current date from table;

我正在使用扩展 JpaRepository 的接口。到目前为止,我已成功通过

@Query
注释插入新查询。 我不知道如何选择我的列和包含 jpql 中天数差异的列。

亲切的问候,

postgresql hibernate spring-boot jpql
3个回答
2
投票

事实上,您可以使用查询创建器。您必须创建一个新实体,该实体具有与原始表相同的列,此外还计算出日期列与现在之间的差异。您必须小心您的列是哪种日期类型。

根据我的经验,只有 java.util 中的日期可以用于与 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()

}

0
投票

不确定你可以用 jpql 做到这一点。 但是您可以直接在存储库中将查询用作本机查询:

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

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


0
投票

您可以使用JPQL

day
功能:

@Query("select day(date_column - current_date) from entity")
© www.soinside.com 2019 - 2024. All rights reserved.