Моя сущность содержит географическое местоположение.
В моем хранилище я делаю пользовательский запрос, чтобы получить все сообщения в определенном радиусе заданного местоположения. Расстояние от курса зависит от каждого запроса в зависимости от заданной точки. Поэтому я не хочу упорствовать на расстоянии.
Мне нужно рассчитать расстояние в моем запросе. Я хочу добавить это расчетное расстояние к моей сущности. Кто-нибудь знает, как я могу сопоставить что-то из моего набора результатов в поле сущности, не пропуская это. Я знаю, что есть аннотация @Forumla для некоторых простых вещей, но это не помогает мне.
Запрос:
@Query(name = "MessageWithDistance",value = "SELECT m.*,cast(st_distance_sphere(m.location,:userLocation) as double precision) as distance FROM message_entity AS m WHERE st_within(m.location, :polygon)=TRUE",nativeQuery = true)
List<MessageEntity> findWithin(@Param("userLocation") Point point, @Param("polygon") Polygon polygon);
@Entity
public class MessageEntity {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY,generator = "message_seq_gen")
@SequenceGenerator(name = "message_seq_gen", sequenceName = "message_id_seq")
private Long id;
private LocalDateTime dateTime;
@Column(name = "location",columnDefinition = "GEOMETRY(Point, 4326)")
@Type(type = "jts_geometry")
private Point location;
private String message;
@Transient
private Double distance;