我有一个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中,这似乎不起作用。
可能有一种方法可以在架构上解决这个问题,但在某些项目中你没有这个选择。
所以最后的问题是:有没有办法让这个工作,或者我真的需要知道我使用的每个实体的映射?
答案 0 :(得分:1)
您可以通过多种方式执行此操作:
collect
带标注的标签列表。有关详细信息,请参阅the documentation 关于属性,我看不出这有用。有兴趣了解用例。