データモデル:親データをツリーデータ構造内の子コレクションのメンバーとしてフェッチするspringデータneo4jを避けるにはどうすればよいですか?
Iは、:Node
タイプのノードが同じタイプのノードに対する親であることができるのNeo4jに格納されたツリー構造を有します。
:Node
右側にノードが表示されます。 (赤色で表示)ツリーのルートは、葉といくつかの属性を共有するので、AbstractNode
という抽象クラスがあります:親ノードの
public abstract class AbstractNode {
private Long id;
@NotEmpty
private String code;
@Relationship(type = "SUBTREE_OF", direction = Relationship.INCOMING)
private Set<Node> children;
<getters & setters omitted>
}
クラス:子供のための
public class CodeSet extends AbstractNode {
@Relationship(type = "SUBTREE_OF", direction = Relationship.OUTGOING)
private Application parent;
<getters and setters omitted>
}
クラスノード:
public class Node extends AbstractNode {
@NotEmpty
private String description;
@NotEmpty
private String type;
@NotEmpty
private String name;
@NotNull
@Relationship(type = "SUBTREE_OF", direction = Relationship.OUTGOING)
private AbstractNode parent;
<getters and setters omitted>
}
サービス層:
このメソッドは、指定の深さにノード情報を取得するために使用されます。
@Transactional(readOnly = true)
public Node findById(Long id, int depth) throws EntityNotFoundException {
Node entity = nodeRepository.findOne(id, depth);
if (entity == null) {
throw new EntityNotFoundException(String.format("Node %d not found", id));
} else {
return entity;
}
}
問題::Node
ノードをフェッチする場合 、同じタイプの親を持っているものは、子どもたちのリストにこれらの親を持っています明らかに間違っていて、他の問題を引き起こします。説明したデータセットについては、デバッガのスクリーンショットを参照してください。
解決方法
どのバージョンのSDNとOGMを使用していますか? – digx1
@ digx1 'org.springframework.data:spring-data-neo4j:4.1.2.RELEASE'と対応する' org.neo4j:neo4j-ogm-core:2.0.3' – Polyakoff