Java 为什么neo4j ogm不保存与嵌入式neo4j数据库的关系?

Java 为什么neo4j ogm不保存与嵌入式neo4j数据库的关系?,java,spring-boot,neo4j,neo4j-ogm,Java,Spring Boot,Neo4j,Neo4j Ogm,我试图得到一个带有spring boot、joinfaces和带有对象映射ogm的嵌入式图形数据库的嵌入式tomcat服务器的工作系统。一切似乎都很好。我将我的消息来源提交给 问题是,所有示例(参见i.e.)都显示@Relationship与ogm一起工作。但是当我用 @NodeEntity public abstract class GenericNode<T> implements INode<T> { @GraphId public Long id

我试图得到一个带有spring boot、joinfaces和带有对象映射ogm的嵌入式图形数据库的嵌入式tomcat服务器的工作系统。一切似乎都很好。我将我的消息来源提交给

问题是,所有示例(参见i.e.)都显示@Relationship与ogm一起工作。但是当我用

@NodeEntity
public abstract class GenericNode<T> implements INode<T> {

    @GraphId
    public Long id;

    @SuppressWarnings("unused")
    private void setId(Long id) {
        this.id = id;
    }

    public String label;

    @Relationship(type = "PARENT_OF", direction = Relationship.INCOMING)
    public Set<T> parents = new HashSet<T>();

    @Relationship(type = "CHILD_OF", direction = Relationship.OUTGOING)
    public Set<T> children = new HashSet<T>();

    ...
我不知道发生这种错误的原因。我使用neo4j ogm 2.1.2和neo4j 3.1.3


有什么想法吗?

您看到的结果是预期的-neo4j ogm映射您在cypher查询中返回的内容(加上您在会话中已有的内容)。如果还需要相关实体,则返回关系和其他节点:

MATCH (x)-[r]-(x2) RETURN x,r,x2
或者,如果您希望(例如)仅对母体田地进行水合处理:

MATCH (x)<-[r:PARENT_OF]-(p) RETURN x,r,p

还要注意的是,在父级和子级之间有两种关系-
parent\u of
child\u of
——这通常是一个建模错误,一种关系就足够了。关系的方向应该告诉你语义——什么是父,什么是子。你能提供一个有效的例子吗?因为当我使用`org.neo4j.ogm.model.Result=session.query(“匹配(x)-[r]-(x2)返回x,r,x2”,Collections.emptyMap(),true);对于(Map-Map:result){System.out.println(“C”+Map.get(“x”));System.out.println(“R”+Map.get(“R”);System.out.println(“P”+Map.get(“x2”);}`i get C Role[id=3,label=Role 2,parents=[]]R(2)->(3)P Role[id=2,label=Role 1,parents=[]]C Role[id=4,label=Role=2,parents=]R(5)->(4) P角色[id=5,label=Role 1,parents=[]旁注:当没有真正的映射时,OGM有什么用处?我需要对不同的对象值进行特殊的查询。有没有办法像hibernate或jpa那样获得真正的映射?请参阅文档的这一部分,或者例如,这篇博客文章中的示例。当您使用session.loadX方法时,jpa中的映射会发生。没有延迟获取的概念,这就是为什么查询方法适用于您需要更具体地获取什么的情况,类似于jpa查询中的急切获取。谢谢,您的回答很有帮助,但告诉我,我有很多工作要做,以构建具有数据库接口的已定义数据模型。
MATCH (x)-[r]-(x2) RETURN x,r,x2
MATCH (x)<-[r:PARENT_OF]-(p) RETURN x,r,p
MATCH p=(x)-[:PARENT_OF*..]-() RETURN nodes(p),rels(p)