【问题标题】:SpringData JPA Methods or query to perform arithmetic operations with Postgres columnsSpring Data JPA 方法或查询以使用 Postgres 列执行算术运算
【发布时间】:2020-06-25 11:20:34
【问题描述】:

我是 SpringBoot 的初学者,并且可以访问带有多个列的 postgres 表以及带有时区列的两个时间戳(开始时间和结束时间)。除了检索所有列之外,我还想显示以秒为单位的时间(结束时间 - 开始时间)。我正在扩展 PagingAndSortingRepository (findAll) 以进行分页和排序检索。请提出所需的解决方案。将使用 ReactJS 进行演示。

【问题讨论】:

  • 一般来说,提问时,请出示您已经尝试过但未能成功的代码。

标签: reactjs postgresql spring-boot spring-data-jpa spring-data


【解决方案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,以便我给你一个准确的答案。
猜你喜欢
  • 2019-06-21
  • 1970-01-01
  • 2021-06-23
  • 2021-02-24
  • 1970-01-01
  • 1970-01-01
  • 2019-05-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多