Spring Data JPA 方法或查询以使用 Postgres 列执行算术运算
Posted
技术标签:
【中文标题】Spring Data JPA 方法或查询以使用 Postgres 列执行算术运算【英文标题】:SpringData JPA Methods or query to perform arithmetic operations with Postgres columns 【发布时间】:2020-06-25 11:20:34 【问题描述】:我是 SpringBoot 的初学者,并且可以访问带有多个列的 postgres 表以及带有时区列的两个时间戳(开始时间和结束时间)。除了检索所有列之外,我还想显示以秒为单位的时间(结束时间 - 开始时间)。我正在扩展 PagingAndSortingRepository (findAll) 以进行分页和排序检索。请提出所需的解决方案。将使用 ReactJS 进行演示。
【问题讨论】:
一般来说,提问时,请出示您已经尝试过但未能成功的代码。 【参考方案1】:我认为表示层并不重要。
实现此功能的一种方法是使用自定义查询,例如:
public interface CustomRepository extends JpaRepository<MyEntity, Long>
@Query(value = "SELECT id, column1, column2, (
SELECT EXTRACT(EPOCH from timezone1) - EXTRACT(EPOCH FROM timezone2)
FROM table where id = t.id) as difference
FROM table t", nativeQuery = true)
List<MyEntityProjection> findAllWithTimestamp();
MyEntityProjection
是投影接口,包含所有字段的 getter 以及用于第二个差异的 getter。如果想了解更多关于投影的知识,可以试试here
附:以上查询仅适用于 PostgreSQL。
【讨论】:
谢谢你Turbut。会回复你的 您好 Turbut,无法解决问题。尝试过各种子查询、横向连接,但输出不显示 time_taken 列或出现错误。 请给出你的准确SQL,以便我给你一个准确的答案。以上是关于Spring Data JPA 方法或查询以使用 Postgres 列执行算术运算的主要内容,如果未能解决你的问题,请参考以下文章