使用自定义标签的OGM自定义查询

时间:2017-12-04 14:11:55

标签: neo4j label neo4j-ogm

我有一个Neo4j / OGM实体Person我使用它映射到标签User @NodeEntity(label="User)。 我现在想编写一个自定义查询MATCH (p:Person) where...。 据我所知,没有办法在Hibernate中使用我的应用程序端类型Person而不是图形边标签User,对吧? 如果有办法,请解释如何执行此操作,或告诉我谷歌的关键词。 同样的问题适用于实体属性。

谢谢。

更新: 假设我有一个像这样的User类:

@NodeEntity(label="Person")
class User {
@Property(name="username")
   private String name;
   ...
}

我已经使用Mapping来获得松耦合,所以我可以例如。重命名Person并且不会影响Neo4j。 在Neo4j中有例如House s与User s的关系。 现在我想加载所有的房子,引用名为" Sven"的用户,因此该声明将是MATCH (h:House)-[:HOLDS]->(p:Person {username:'Sven'})。 鉴于,我可能会在其他地方的某个子模块中有一个巨大的项目,我可能不知道,User被映射到Person而用户。name被映射到username,所以在Hibernate环境中,我会查询为MATCH (h:House)-[:HOLDS]->(u:User {name:'Sven'})。然而,在OGM中,这似乎不起作用。 可能有一种方法可以在架构上解决这个问题,但在某些项目中你没有这个选择。

所以最后的问题是:有没有办法让这个工作,或者我真的需要知道我使用的每个实体的映射?

1 个答案:

答案 0 :(得分:1)

您可以通过多种方式执行此操作:

  • 让您的用户扩展Person类
  • 如果您需要更多动态标签,则该类可以包含要应用的collect带标注的标签列表。有关详细信息,请参阅the documentation

关于属性,我看不出这有用。有兴趣了解用例。