我在Play!Framework应用程序 中使用带有Spring数据的Neo4j-Spatial 。
我有一个用户类型的@NodeEntity ,我想将它存储在数据库中,以及一个用于基于位置的查询的空间索引。
我看到的示例使用 GraphDatabaseService 创建一个节点:
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个节点:
- neo4j 图中一个User类型的节点
- 一个节点包含与上述节点相关的位置信息。