Используя CompositeAttributeConverter
, можно определить свой собственный класс для хранения координат широты и долготы.Однако вы также можете использовать встроенные Point
и соответствующие классы Distance
, определенные в Spring Data Commons.
Вот пример из тестовых случаев в Spring Data Neo4j:
public class Restaurant implements Comparable<Restaurant> {
@Id @GeneratedValue private Long id;
private String name;
@Convert(PointConverter.class) private Point location; //Encapsulates lat/lon
private int zip;
private double score;
private String description;
private boolean halal;
Затем вы можете определить такие методы, как:
import org.springframework.data.geo.Point;
import org.springframework.data.neo4j.conversion.PointConverter;
public interface RestaurantRepository extends Neo4jRepository<Restaurant, Long> {
List<Restaurant> findByNameAndLocationNear(String name, Distance distance, Point point);
List<Restaurant> findByLocationNearAndName(Distance distance, Point point, String name);
}
Метод поиска будет генерировать CYPHERкоторый передает следующие аргументы функции distance
:
- Свойства lat и lon, определенные в вашем узле
- Аргументы at и lon передаются в качестве аргумента в метод поиска,
Это то, что вы искали?Если да, отлично!Если нет, не могли бы вы уточнить ваш вопрос.