【发布时间】:2020-06-01 09:28:03
【问题描述】:
我正在使用 Spring Data JPA 来映射实体和表。
在我的 PostgreSQL 数据库中,我有一个名为 declare_location 的表,它存储带长和纬度的位置。我编写了一个带有 postgre 特定语法的 sql 本机查询,以检索已声明位置的列表,按到给定点的相对距离排序:
@Query(value="select *, 1.60934 * (point (:longRef, :latRef) <@> point (longitude, latitude)) as distance from declared_location order by distance", nativeQuery = true)
List<DeclaredLocation> findAllSortedByDistance(@Param("longRef") double longRef, @Param("latRef") double latRef);
我想将 Postgre 计算的距离(列“距离”)映射到我实体的一个字段。这就是我卡住的地方。这是我的实体:
@Entity
public class DeclaredLocation {
@Id
@Type(type = "uuid-char")
@GeneratedValue(strategy = GenerationType.AUTO)
private UUID id;
private double latitude;
private double longitude;
private String address;
@Column
private Double relativeDistanceKm;
(...)
}
我应该如何告诉 Spring Data JPA 将 postgre 作为本机查询结果创建的列 distance 映射到实体的字段 relativeDistanceKm?这样做的正确方法是什么?
【问题讨论】:
标签: postgresql hibernate spring-data-jpa nativequery