gpt4 book ai didi

java - Spring 数据 Neo4j : How do I pull a list of nodes of which I do not know the type?

转载 作者:行者123 更新时间:2023-11-29 05:05:51 25 4
gpt4 key购买 nike

我正在使用 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();

}

我有一个想法,我或许可以扩展一个公共(public)基类,比如 PersistentBaseObject带有 id 和名称,或类似 HasIdAndName 的界面.虽然不确定我将如何整合它,

最佳答案

是的,你可以扩展一个公共(public)基类,也许像这样-

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 标签。

编辑:

可以通过将 Owner 更改为接口(interface)来避免附加标签。那么存储库上返回 Owner 集合的 @Query 应该仍然有效。

关于java - Spring 数据 Neo4j : How do I pull a list of nodes of which I do not know the type?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30367978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com