我正在尝试将Spring Data Neo4J 3升级到4-我正在使用Neo4J 2.2.2。
我使用GraphRepository实例查询数据库,获取对象。
该对象具有多个关系,这些关系不会被获取(故意避免读取整个图形)。
在SDN3代码中,只需使用Neo4JTemplate类执行每个需要获取的关系的提取调用。这非常有效。
然而,在SDN4中,此功能已被删除,并由load()方法的各种实现替换。从文档中不清楚如何实现我在SDN3中所做的事情。
明确一点:如果我在第一个检索的类别中有一组对象,由一个关系管理,我想只检索该集合中的对象,而不是数据库中所有这些对象的整个集合。
我是否在升级过程中错过了关键内容,还是有一种简单的方法可以做我所要做的事情?
添加代码:
我的实体类:
执行 getActiveState() 方法时,返回 null,因为状态集合为空(尚未获取)。
我使用GraphRepository实例查询数据库,获取对象。
该对象具有多个关系,这些关系不会被获取(故意避免读取整个图形)。
在SDN3代码中,只需使用Neo4JTemplate类执行每个需要获取的关系的提取调用。这非常有效。
然而,在SDN4中,此功能已被删除,并由load()方法的各种实现替换。从文档中不清楚如何实现我在SDN3中所做的事情。
明确一点:如果我在第一个检索的类别中有一组对象,由一个关系管理,我想只检索该集合中的对象,而不是数据库中所有这些对象的整个集合。
我是否在升级过程中错过了关键内容,还是有一种简单的方法可以做我所要做的事情?
添加代码:
我的实体类:
@NodeEntity
public class File implements MetroNode {
private Long id;
private String fileName;
private SourceState sourceState;
private Set<State> states;
@GraphId
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
@Relationship(type = "HAS_FILE", direction = Relationship.INCOMING)
public SourceState getSourceState() {
return sourceState;
}
public void setSourceState(SourceState sourceState) {
this.sourceState = sourceState;
}
public State addState(MetroNode otherNode, StateStatus status) {
if (this.states == null) {
this.states = new HashSet<State>();
}
State state = new State(this, otherNode, status.toString());
this.states.add(state);
return state;
}
@Relationship(type = "HAS_STATE", direction = Relationship.OUTGOING)
public Set<State> getStates() {
return states;
}
public State getActiveState() {
if (this.states != null) {
for (State state : this.states) {
if (state.isActive()) {
return state;
}
}
}
return null;
}
}
我的仓库类:
public interface FileRepository extends GraphRepository<File> {
File findByFileName(String fileName);
}
执行 getActiveState() 方法时,返回 null,因为状态集合为空(尚未获取)。
重新查看我的代码,我想知道是否由于我没有使用来自存储库的“本机”加载方法,而是使用了重载版本?