我正在尝试向节点添加一个纬度点。我找不到有关应使用哪个Java类的任何文档。
这是我所拥有的:
@NodeEntity
public class Coordination {
@Id
@GeneratedValue
private Long id;
@Index
private Value point;
private Double lon;
private Double lat;
@Relationship(type = "GEO_LOCATION", direction = Relationship.INCOMING)
private List<GeoLocation> geoLocations;
public Coordination(Double lon, Double lat) {
Value point = new PointValue(new InternalPoint2D(4326, lon, lat));
this.lon = lon;
this.lat = lat;
}
}
值类不适用于我。我想念什么?
答案 0 :(得分:1)
使用CompositeAttributeConverter
可以定义自己的类来存储纬度和经度坐标。但是,您也可以使用Spring Data Commons中定义的内置Point
和相应的Distance
类。
以下是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);
}
finder方法将生成CYPHER,它将以下参数传递给distance
函数:
这是您要找的东西吗?如果是的话,太好了!如果没有,请您澄清您的问题。