RelationshipEntity 内部 NodeEntity 的 SDN 4 集合
SDN 4 Collection of NodeEntity inside of RelationshipEntity
我想创建以下@RelationshipEntity:
@RelationshipEntity(type = "VOTE_GROUP")
public class VoteGroup{
@GraphId
private Long id;
@StartNode
private Decision decision;
@EndNode
private Criterion criterion;
private Object value;
}
和@NodeEntity:
@NodeEntity
public class Vote extends Authorable {
private final static String CONTAINS = "CONTAINS";
private double weight;
private String description;
}
是否可以将 Vote
的集合添加到我的 VoteGroup
关系实体?像这样:
@RelationshipEntity(type = "VOTE_GROUP")
public class VoteGroup{
@GraphId
private Long id;
@StartNode
private Decision decision;
@EndNode
private Criterion criterion;
private Object value;
private Set<Vote> votes = new HashSet<>();
}
有用吗?如果是这样,我以后能得到这个投票列表吗..对它们进行分页?
我问这个的原因:
现在,在我当前的实现中,我有一个单独的 VoteGroup
实体,但是 Vote
/VoteGroup
创建的性能非常慢,所以这就是为什么我正在寻找一个新方法如何修复它。
@NodeEntity
public class VoteGroup extends BaseEntity {
private static final String VOTED_ON = "VOTED_ON";
private final static String VOTED_FOR = "VOTED_FOR";
private final static String CONTAINS = "CONTAINS";
@Relationship(type = VOTED_FOR, direction = Relationship.OUTGOING)
private Decision decision;
@Relationship(type = VOTED_ON, direction = Relationship.OUTGOING)
private Criterion criterion;
@Relationship(type = CONTAINS, direction = Relationship.OUTGOING)
private Set<Vote> votes = new HashSet<>();
private double avgVotesWeight;
private long totalVotesCount;
}
Neo4j 的基本原则是:节点、属性和关系。
- 节点可以有属性和关系。
- 关系可以有属性。
将实体集合添加到关系中就像关系具有关系一样。不可能。
您可能可以使用 属性 和 @Convert
用 OGM 伪造它,但是,也许最好不要违背系统的原则,并寻找另一种方法来模拟您的领域。
可能还有其他解决性能问题的方法。也许提出另一个问题,专门描述所面临的性能问题。
我想创建以下@RelationshipEntity:
@RelationshipEntity(type = "VOTE_GROUP")
public class VoteGroup{
@GraphId
private Long id;
@StartNode
private Decision decision;
@EndNode
private Criterion criterion;
private Object value;
}
和@NodeEntity:
@NodeEntity
public class Vote extends Authorable {
private final static String CONTAINS = "CONTAINS";
private double weight;
private String description;
}
是否可以将 Vote
的集合添加到我的 VoteGroup
关系实体?像这样:
@RelationshipEntity(type = "VOTE_GROUP")
public class VoteGroup{
@GraphId
private Long id;
@StartNode
private Decision decision;
@EndNode
private Criterion criterion;
private Object value;
private Set<Vote> votes = new HashSet<>();
}
有用吗?如果是这样,我以后能得到这个投票列表吗..对它们进行分页?
我问这个的原因:
现在,在我当前的实现中,我有一个单独的 VoteGroup
实体,但是 Vote
/VoteGroup
创建的性能非常慢,所以这就是为什么我正在寻找一个新方法如何修复它。
@NodeEntity
public class VoteGroup extends BaseEntity {
private static final String VOTED_ON = "VOTED_ON";
private final static String VOTED_FOR = "VOTED_FOR";
private final static String CONTAINS = "CONTAINS";
@Relationship(type = VOTED_FOR, direction = Relationship.OUTGOING)
private Decision decision;
@Relationship(type = VOTED_ON, direction = Relationship.OUTGOING)
private Criterion criterion;
@Relationship(type = CONTAINS, direction = Relationship.OUTGOING)
private Set<Vote> votes = new HashSet<>();
private double avgVotesWeight;
private long totalVotesCount;
}
Neo4j 的基本原则是:节点、属性和关系。
- 节点可以有属性和关系。
- 关系可以有属性。
将实体集合添加到关系中就像关系具有关系一样。不可能。
您可能可以使用 属性 和 @Convert
用 OGM 伪造它,但是,也许最好不要违背系统的原则,并寻找另一种方法来模拟您的领域。
可能还有其他解决性能问题的方法。也许提出另一个问题,专门描述所面临的性能问题。