如何从 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;
}
现在我得到了这个结果:
- 在 neo4j 浏览器中,这种关系称为 merberships。为什么 OGM 没有使用 RelationshipEntity 的类型?
- 在我的 Rest 服务中,使用 findAll,我仍然在此集合上得到 null。
不,这里没问题:)我只是忘了在我的节点上保留@Relationship
另一个问题:我如何使用 Neo4jRepository.findById 给出的这个 Optional,有人有适合我的文章吗?
您声明 Category
和 Sport
之间的直接关系称为 MEMBER_OF,但也定义了丰富的关系(@RelationshipEntity
) 同名。
Neo4j-OGM 不知道在这种情况下要映射什么。
从我在示例代码中看到的情况来看,根本没有必要添加丰富的关系 class,因为没有定义其他属性,这是创建这样一个 [=23] 的唯一原因=].
如果您定义了属性但未在示例中列出,您应该更改集合的类型并将其设置为 Membership
classes.
当然,这是一个简单的问题,但我找不到答案。 我如何使用 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;
}
现在我得到了这个结果:
- 在 neo4j 浏览器中,这种关系称为 merberships。为什么 OGM 没有使用 RelationshipEntity 的类型?
- 在我的 Rest 服务中,使用 findAll,我仍然在此集合上得到 null。
不,这里没问题:)我只是忘了在我的节点上保留@Relationship
另一个问题:我如何使用 Neo4jRepository.findById 给出的这个 Optional,有人有适合我的文章吗?
您声明 Category
和 Sport
之间的直接关系称为 MEMBER_OF,但也定义了丰富的关系(@RelationshipEntity
) 同名。
Neo4j-OGM 不知道在这种情况下要映射什么。
从我在示例代码中看到的情况来看,根本没有必要添加丰富的关系 class,因为没有定义其他属性,这是创建这样一个 [=23] 的唯一原因=].
如果您定义了属性但未在示例中列出,您应该更改集合的类型并将其设置为 Membership
classes.