java – Spring Data Neo4J 4 – 没有template.fetch()
我正在尝试从
Spring Data Neo4J 3升级到4 – 我正在使用Neo4J 2.2.2.
我使用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返回,因为状态Set为空(尚未获取). 再看一下我的代码,我想知道是不是因为我没有使用存储库中的“本机”加载方法,而是重载版本? 解决方法
SDN 4允许您使用
persistence horizon控制相关实体的加载.
加载深度为0的实体将获取实体的属性而没有相关实体. 不支持按关系类型控制深度. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |