loadAll 不加载具有不同标签的关系节点

loadAll not loading relationship nodes with different labels

在 Java Eclipse 中,我根据 neo4j OGM https://neo4j.com/docs/ogm-manual/current/tutorial/ 上的教程创建了我的代码,但是当我使用 loadAll() 方法时,它加载了所有节点和相同的关系标签,但它不会加载具有不同标签的节点。这是我创建的两个节点。这是一个简单的例子,说明我正在尝试做但没有成功。

@NodeEntity
public class Child {

    @Id@GeneratedValue
    private Long id;
    private String name;

    @Relationship(type = "PARENT_OF", direction  = Relationship.INCOMING)
    Parent parent;

    public String getName() {
        return name;
    }

    public Parent getParent() {
        return parent;
    }
}

@NodeEntity
public class Parent {

    @Id@GeneratedValue
    private Long id;
    private String name;

    @Relationship(type = "PARENT_OF")
    Set<Child> children;

    public String getName() {
        return name;
    }

    public Set<Child> getChildren() {
        return children;
    }
}

这就是我尝试访问数据的方式。

import org.neo4j.ogm.config.Configuration;
import org.neo4j.ogm.session.Session;
import org.neo4j.ogm.session.SessionFactory;

public class Main {
    private SessionFactory sessionFactory=null;
    private Session session=null;
    private Configuration configuration=null;
    private final String uri = "bolt://localhost:7687";
    private final String user = "neo4j";
    private final String password = "admin";

    private void connect(String entityName) {
        System.out.println("Connecting to Neo4j ("+uri+")");
        if(configuration==null) {
            configuration = new Configuration.Builder()
                .uri(uri)
                .credentials(user, password)
                .build();
        }
        sessionFactory = new SessionFactory(configuration, entityName);
        session = sessionFactory.openSession();
    }

    private void disconnect() {
        System.out.println("Closing the connection.");
        sessionFactory.close();
    }

    public Collection<Parent> getParents() {
        connect(Parent.class.getName());
        Collection<Parent> projects = session.loadAll(Parent.class);        
        disconnect();
        return projects;
    }

    public static void main(String[] args) {
        Main m = new Main();
        Collection<Parent> a = m.getParents();
        for (Iterator iterator = a.iterator(); iterator.hasNext();) {
            Parent parent = (Parent) iterator.next();
            System.out.println(parent.getName());
            System.out.println(parent.getChildren());           
        }
    }
 }

我已经试过了 link https://github.com/neo4j/neo4j-ogm/issues/32 上的内容。如果有人能告诉我我做错了什么,我会很感激。 我是 neo4j-ogm 3.1.1 和 neo4j-ogm-bolt-driver3.0.2

您的 SessionFactory 配置仅将 Parent class 设置为要使用的实体。 Neo4j-OGM 只会将节点映射到它知道的 classes。

您应该提供例如创建 SessionFactory.

时 classes 所在的包