Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql Spring Boot和JpaRepository通过纬度和经度参数按距离排序_Postgresql_Spring Boot_Jpa 2.0_Geospatial - Fatal编程技术网

Postgresql Spring Boot和JpaRepository通过纬度和经度参数按距离排序

Postgresql Spring Boot和JpaRepository通过纬度和经度参数按距离排序,postgresql,spring-boot,jpa-2.0,geospatial,Postgresql,Spring Boot,Jpa 2.0,Geospatial,使用JpaRepository接口创建查询时遇到问题。我使用分页机制。如何添加按距离排序?活动地点提供的地理参数。(纬度、经度)。我还想添加一个功能,通过范围限制距离。例如: “如果距离在DB级别,您可以使用或来帮助您计算地理空间距离。您使用其中的任何一种吗?--Spring数据还支持地理空间查询(即通过Georgesult&Georgesults存储库返回类型),但我不确定PostgreSQL是否也支持这些查询(我只找到了MongoDB的例子)。 @Repository public inte

使用JpaRepository接口创建查询时遇到问题。我使用分页机制。如何添加按距离排序?活动地点提供的地理参数。(纬度、经度)。我还想添加一个功能,通过范围限制距离。例如:
“如果距离在DB级别,您可以使用或来帮助您计算地理空间距离。您使用其中的任何一种吗?--Spring数据还支持地理空间查询(即通过
Georgesult
&
Georgesults
存储库返回类型),但我不确定PostgreSQL是否也支持这些查询(我只找到了MongoDB的例子)。
@Repository
public interface EventRepository extends JpaRepository<Event, Long> {

public static final String GET_PAGE_QUERY = "WHERE " +
        "(:searchTerm is null or e.title like '%:searchTerm%') AND " +
        "((:userListId) is null or e.user.id in (:userListId)) AND " +
        "((:sportTypeIdList) is null or e.sportType.id in (:sportTypeIdList)) " ;


@Query(value = "SELECT e FROM Event e " + GET_PAGE_QUERY,
        countQuery = "SELECT COUNT(e) FROM Event e " + GET_PAGE_QUERY)
    Page<Event> getPage(@Param("searchTerm") String searchTerm, @Param("userListId") List<Long> userListId, @Param("sportTypeIdList") List<Long> sportTypeIdList, Pageable pageable);
}
@Getter
@Setter
@Entity
@Table(name = "event")
public class Event {

    @Id
    @Column(name = "ID")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "event_seq")
    @SequenceGenerator(name = "event_seq", sequenceName = "event_seq", allocationSize = 1)
    private Long id;

    @Column(name = "TITLE", length = 50, nullable = false)
    @NotNull
    @Size(min = 4, max = 50)
    private String title;

    @Column(name = "DESCRIPTION", length = 500, nullable = false)
    @NotNull
    @Size(min = 4, max = 500)
    private String description;

    @ManyToOne(fetch = FetchType.EAGER, optional = false)
    private SportType sportType;

    @OneToOne(fetch = FetchType.EAGER, optional = false)
    private EventPlace place;

    @ManyToOne(optional = false)
    private User user;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssZ")
    @Column(name = "CREATE_DATE", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    @NotNull
    private Date createDate = new Date();

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssZ")
    @Column(name = "START_DATE", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    @NotNull
    private Date startDate;

    @Column(name = "STATUS", nullable = false)
    @NotNull
    @Enumerated(EnumType.STRING)
    private EventStatus status = EventStatus.ACTIVE;

    @Transient
    private double distance;
}
@Getter
@Setter
@Entity
public class EventPlace {

    @Id
    @Column(name = "ID")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "event_place_seq")
    @SequenceGenerator(name = "event_place_seq", sequenceName = "event_place_seq", allocationSize = 1)
    private Long id;

    @Column(name = "NAME", length = 50, nullable = false)
    @NotNull
    @Size(min = 4, max = 50)
    private String name;

    @Column(name = "CITY", length = 50, nullable = false)
    @NotNull
    @Size(min = 4, max = 50)
    private String city;

    @Column(name = "STREET", length = 50, nullable = false)
    @NotNull
    @Size(min = 4, max = 50)
    private String street;

    @Column(name = "ZIP_CODE", length = 50, nullable = false)
    @NotNull
    @Size(min = 4, max = 50)
    private String zipCode;

    @Column(name = "DESCRIPTION", length = 500, nullable = false)
    @NotNull
    @Size(min = 4, max = 500)
    private String description;

    @Column(name = "LATITUDE", nullable = false)
    @NotNull
    private Double latitude;

    @Column(name = "LONGITUDE", nullable = false)
    @NotNull
    private Double longitude;

}