我在 Play!Framework 应用程序中使用 Neo4j-Spatial 和 Spring 数据。
我有一个类型为 User 的@NodeEntity,我希望将其存储在数据库中,以及基于位置的查询的空间索引。
我见过的示例使用GraphDatabaseService创建一个Node:
Node stadiumNode = graphDatabaseService.createNode();
然后将此节点添加到空间索引:
Index<Node> index = graphDatabaseService.index().forNodes(indexLayerName, config)`;
stadiumNode.setProperty("wkt", String.format("POINT(%s %s)", lat, lon));
index.add(stadiumNode, "dummyA", "dummyB");
但是,节点没有与之关联的特定类型(例如 User )。为此,我必须先创建interface UserRepository extends GraphRepository<User>
:
@Autowired
private UserRepository userRepository;
然后将User nodeEntity添加到存储库:
User user = new User();
userRepository.save(user);
但是,这会创建 3个节点(空间索引RTree中为1,neo4j图中为2)。这样做的正确方法是什么?我只想要2个节点: