【问题标题】:same RelationshipEntity between multiple type of nodes Neo4j OGM多种类型节点 Neo4j OGM 之间的相同关系实体
【发布时间】:2018-06-19 16:13:32
【问题描述】:

在 neo4j OGM 中,有没有办法在不同类型的节点之间映射相同的 @RelationshipEntity

例如让我们考虑 3 个节点实体:

    @NodeEntity(label = "STATE")
    @JsonSnakeCase
    public class StateEntity extends BaseEntity {

        @Relationship(type = "CONTAINS")
        private CityEntity cityEntity;

        public CityEntity getCityEntity() {
            return cityEntity;
        }

        public void setCityEntity(CityEntity cityEntity) {
            this.cityEntity = cityEntity;
        }
    }

    @NodeEntity(label = "CITY")
    @JsonSnakeCase
    public class CityEntity extends BaseEntity {

        private String cityName;

        @Relationship(type = "CONTAINS",direction = Relationship.INCOMING)
        private StateEntity stateEntity;

        @Relationship(type = "CONTAINS")
        private List<BranchEntity> branchEntities;

        public String getCityName() {
            return cityName;
        }

        public void setCityName(String cityName) {
            this.cityName = cityName;
        }

        public StateEntity getStateEntity() {
            return stateEntity;
        }

        public void setStateEntity(StateEntity stateEntity) {
            this.stateEntity = stateEntity;
        }

        public List<BranchEntity> getBranchEntities() {
            return branchEntities;
        }

        public void setBranchEntities(List<BranchEntity> branchEntities) {
            this.branchEntities = branchEntities;
        }
    }

   @NodeEntity(label = "BRANCH")
@JsonSnakeCase
public class BranchEntity extends BaseEntity {


    @Relationship(type = "CONTAINS",direction = Relationship.INCOMING)
    private CityEntity cityEntity;

}

我想用相同的@RelationEntity 映射所有实体(州、市和分支)@ 说CONTAINS

@RelationshipEntity(type = "CONTAINS")
public class Contains extends BaseRelationshipEntity {

    @StartNode
    StateEntity start;

    @EndNode
    CityEntity end;



}

但是 OGM 只允许我添加州和城市之间的关系,我应该如何编写 OGM 以在多种类型的节点之间创建相同的RelationshipEntity

或者我需要复制这个RelationshipEntity.?.

【问题讨论】:

  • 同一个relationship 是什么意思?是同名的关系吗?或链接超过 02 个节点的 relationship

标签: graph neo4j spring-data-neo4j spring-data-neo4j-4 neo4j-ogm


【解决方案1】:

是的,这可以通过 Neo4j OGM 实现。如果在一个类中有多个相同类型的关系,OGM 会查看目标类型并区分它们。

这是我指的文档部分https://neo4j.com/docs/ogm-manual/3.1/reference/#reference:annotating-entities:relationship:type-discrimination

【讨论】:

  • 你能扩展一下吗?还是你误会了?想象一下 E1 -> 包含 -> E2A AND E1 -> 包含 -> E2B。相同的源节点,相同的关系类型,不同的结束节点。你的链接说每个关系一个,不是吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-16
  • 1970-01-01
  • 2014-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多