Spring Data Neo4j:如何提取我不知道其类型的节点列表?
Spring Data Neo4j: How do I pull a list of nodes of which I do not know the type?
我正在使用 Spring Data Neo4j,我想提取一个所有者列表。所有者可以是 :Person
(人)或 :Entity
(公司)。我不确定 Type<T>
应该是什么。我可以在 GraphRepository<Type>
界面中使用。
我的查询是:
MATCH ()-[r:OWNED_BY]->(o) RETURN
这是我试过的代码:
public interface Owners extends GraphRepository<Object> {
@Query("start o=MATCH ()-[r:OWNED_BY]->(o) RETURN o;")
Iterable<Object> getOwners();
}
我有一个想法,我也许可以扩展一个公共基础 class,例如 PersistentBaseObject
带有 id 和名称,或者像 HasIdAndName
这样的接口。虽然不确定我将如何整合它,
是的,你可以扩展一个公共基础 class,也许像这样-
public class Owner {
Long id;
String name;
...
}
public class Person extends Owner {
private int age;
...
}
public class Entity extends Owner {
private String location;
...
}
并为所有者添加一个匹配的存储库
public interface OwnerRepository extends GraphRepository<Owner> {
}
这将允许您执行 ownerRepository.findAll()
等操作
但是因为你使用的是@Query,所以你没有理由不能把这个方法放在 PersonRepository 上(至少在 SDN 4 中。我不确定 SDN 3.x)
@Query("start o=MATCH ()-[r:OWNED_BY]->(o) RETURN o;")
Iterable<Owner> getOwners();
但是请注意,现在您的 Person 和 Entity 节点将有一个额外的 Owner 标签。
编辑:
可以通过将所有者更改为接口来避免附加标签。
那么返回所有者集合的存储库上的@Query 应该仍然有效。
我正在使用 Spring Data Neo4j,我想提取一个所有者列表。所有者可以是 :Person
(人)或 :Entity
(公司)。我不确定 Type<T>
应该是什么。我可以在 GraphRepository<Type>
界面中使用。
我的查询是:
MATCH ()-[r:OWNED_BY]->(o) RETURN
这是我试过的代码:
public interface Owners extends GraphRepository<Object> {
@Query("start o=MATCH ()-[r:OWNED_BY]->(o) RETURN o;")
Iterable<Object> getOwners();
}
我有一个想法,我也许可以扩展一个公共基础 class,例如 PersistentBaseObject
带有 id 和名称,或者像 HasIdAndName
这样的接口。虽然不确定我将如何整合它,
是的,你可以扩展一个公共基础 class,也许像这样-
public class Owner {
Long id;
String name;
...
}
public class Person extends Owner {
private int age;
...
}
public class Entity extends Owner {
private String location;
...
}
并为所有者添加一个匹配的存储库
public interface OwnerRepository extends GraphRepository<Owner> {
}
这将允许您执行 ownerRepository.findAll()
等操作
但是因为你使用的是@Query,所以你没有理由不能把这个方法放在 PersonRepository 上(至少在 SDN 4 中。我不确定 SDN 3.x)
@Query("start o=MATCH ()-[r:OWNED_BY]->(o) RETURN o;")
Iterable<Owner> getOwners();
但是请注意,现在您的 Person 和 Entity 节点将有一个额外的 Owner 标签。
编辑:
可以通过将所有者更改为接口来避免附加标签。 那么返回所有者集合的存储库上的@Query 应该仍然有效。