这种查询方法是如何工作的?
How does this query method work?
@Query("MATCH (m:Movie)<-[r:ACTED_IN]-(a:Person) RETURN m,r,a LIMIT {limit}")
Collection<Movie> graph(@Param("limit") int limit);
对于此查询,它是 returning "RETURN m, r, a",这是一个包含 3 个元素的完整子图。那为什么'graph'方法的return值只是"Movie"的集合呢? 'r, a' 在哪里,它也是 returned.
我正在尝试了解幕后的机制。
您的 class 路径中似乎定义了 @RelationshipEntity
,但在域 classes 中定义 @Relationship
时没有使用它。
样本:
@NodeEntity
class Pet {
// ...
}
@NodeEntity
class Person {
@Relationship(type = "HAS")
private List<Pet> pets;
// ...
}
@RelationshipEntity(type = "HAS")
class HasRelationship {
// ...
}
如果在 SDN 幕后运行的 Neo4j OGM 找到关系类型,它首先查找 @RelationshipEntity
,如果找到它们,则尝试将返回的类型映射回 @NodeEntity
.在这种情况下,OGM 找到 HasRelationship
并希望将其映射到 Person
class。这失败了,因为 Person
只知道 Pet
并且对象被丢弃。
喜欢我的回答on GitHub。
@Query("MATCH (m:Movie)<-[r:ACTED_IN]-(a:Person) RETURN m,r,a LIMIT {limit}")
Collection<Movie> graph(@Param("limit") int limit);
对于此查询,它是 returning "RETURN m, r, a",这是一个包含 3 个元素的完整子图。那为什么'graph'方法的return值只是"Movie"的集合呢? 'r, a' 在哪里,它也是 returned.
我正在尝试了解幕后的机制。
您的 class 路径中似乎定义了 @RelationshipEntity
,但在域 classes 中定义 @Relationship
时没有使用它。
样本:
@NodeEntity
class Pet {
// ...
}
@NodeEntity
class Person {
@Relationship(type = "HAS")
private List<Pet> pets;
// ...
}
@RelationshipEntity(type = "HAS")
class HasRelationship {
// ...
}
如果在 SDN 幕后运行的 Neo4j OGM 找到关系类型,它首先查找 @RelationshipEntity
,如果找到它们,则尝试将返回的类型映射回 @NodeEntity
.在这种情况下,OGM 找到 HasRelationship
并希望将其映射到 Person
class。这失败了,因为 Person
只知道 Pet
并且对象被丢弃。
喜欢我的回答on GitHub。