neo4j - loadAll 不加载具有不同标签的关系节点
问题描述
在 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());
}
}
}
我已经尝试过此链接https://github.com/neo4j/neo4j-ogm/issues/32上的内容。如果有人能告诉我我做错了什么,我会很感激。我是 neo4j-ogm 3.1.1 和 neo4j-ogm-bolt-driver3.0.2
解决方案
您的SessionFactory
配置仅将Parent
类设置为要使用的实体。Neo4j-OGM 只会将节点映射到它知道的类。
您应该在创建SessionFactory
.
推荐阅读
- sql - RDBMS 中“OneOf”关系的最佳模式
- django - Django如何在使用信号从另一个模型输入后更新一些特定的字段数据
- java - Netty ChannelRead() 未被调用且 writeAndFlush() 不起作用
- android - cmd + s 正在崩溃 android 模拟器
- reactjs - 古腾堡块变化从工具栏中删除对齐
- java - 垂直写入数字的循环
- python - python - 打开文件和文件的其他方法
- vpn - `AllowedIPs` 的 WireGuard [Peer] 配置可以是 `/0` CIDR IP 地址吗?
- python - 使用带有 tkinter 输入 GUI 表单的内部函数结束正在运行的函数,并在两者之间退出 GUI 时显示警告消息
- javascript - 如何修复此错误:Discordjs 中的“TypeError: Cannot read properties of undefined (reading 'toLowerCase')”?