Давайте предположим, что у нас есть репозиторий на основе Spring JPA
@Repository
public interface MyClassRepository extends CrudRepository<MyClass, Long> {
}
с сущностью
@Entity
@Table(name = "classes")
public class MyClass {
private double latitude;
private double longitude;
// Getter + Setter
}
Я попытался найти все сохраненные записи в данном экземпляре вокруг ссылочного объекта. Для расчета расстояния между позицией первого объекта и позицией второго объекта я подумал о пользовательском @Query
в сочетании с формулой Гаверсайна .
@Query("SELECT c FROM MyClass c WHERE :distance >= haversine(c, :origin)")
public List<Passenger> findAll(@Param("origin") MyClass origin, @Param("distance") double distance);
Можно ли определить функцию SQLhaversine()
в дополнительном запросе, например, @Query("CREATE FUNCTION haversine(...) ...")
, потому что я использую эту функцию в нескольких пользовательских запросах и пытаюсь предотвратить повторение кода. Есть идеи по этому поводу?