如何从 SDN 5 中的 findAll 获取关系实体?

How get relationship entity from findAll in SDN 5?

当然,这是一个简单的问题,但我找不到答案。 我如何使用 Neo4JRepository 从关系中获取实体?

Java 8 // Spring 启动 2 // SDN 5.0.9 // OGM 3

这是我的代码:

@NodeEntity(label = "category")
public class Category {

    private @Id @GeneratedValue(strategy = InternalIdStrategy.class) Long id;
    private String name;
    @Relationship(type = "MEMBER_OF", direction = Relationship.INCOMING)
    private Set<Sport> sports;
}

@NodeEntity(label = "sport")
public class Sport {

    private @Id @GeneratedValue(strategy = InternalIdStrategy.class) Long id;
    private String name;
    private String descrition;
    @Relationship(type = "MEMBER_OF")
    private Set<Category> categories;
}
@RelationshipEntity(type = "MEMBER_OF")
public class Membership {
    @Id
    @GeneratedValue
    private Long id;
    @StartNode
    Sport sport;
    @EndNode
    Category category;
}

我的 Neo4jRepository 中的一个简单的 findAll return 所有节点 Sport 但设置的类别为空

那么,你能告诉我我做错了什么吗?

谢谢。


编辑 21/08/2018

我把我的 类 改成了这样:

@NodeEntity(label = "sport")
public class Sport {

    private @Id @GeneratedValue(strategy = InternalIdStrategy.class) Long id;
    private String name;
    private String descrition;
    private Set<Membership> memberships;
}
@NodeEntity(label = "category")
public class Category {

    private @Id @GeneratedValue(strategy = InternalIdStrategy.class) Long id;
    private String name;
    private Set<Membership> memberships;
}
@RelationshipEntity(type = "MEMBER_OF")
public class Membership {
    @Id
    @GeneratedValue
    private Long id;
    @StartNode
    Sport sport;
    @EndNode
    Category category;
}

现在我得到了这个结果:

不,这里没问题:)我只是忘了在我的节点上保留@Relationship

另一个问题:我如何使用 Neo4jRepository.findById 给出的这个 Optional,有人有适合我的文章吗?

您声明 CategorySport 之间的直接关系称为 MEMBER_OF,但也定义了丰富的关系(@RelationshipEntity) 同名。 Neo4j-OGM 不知道在这种情况下要映射什么。

从我在示例代码中看到的情况来看,根本没有必要添加丰富的关系 class,因为没有定义其他属性,这是创建这样一个 [=23] 的唯一原因=].

如果您定义了属性但未在示例中列出,您应该更改集合的类型并将其设置为 Membership classes.