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 所在的包
在 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
.