如何使用Spring数据Neo4j RX返回多个字段?

如何使用Spring数据Neo4j RX返回多个字段?,neo4j,spring-data-neo4j,Neo4j,Spring Data Neo4j,我使用的是弹簧数据Neo4j RX。我有这样一个问题: @Query("MATCH (a:Repo)-[:REPO_DEPEND_ON]->(b:Repo) WHERE a.name= $name RETURN a.name, b.name") String[] getSingleRepoDependencyTo(String name); 我知道这里的返回类型是错误的,因为它不能是字符串数组。但是,如何正确地得到包含两个字段的结果呢 我在网上搜索了很长时间,但找不到

我使用的是弹簧数据Neo4j RX。我有这样一个问题:

@Query("MATCH (a:Repo)-[:REPO_DEPEND_ON]->(b:Repo) WHERE a.name= $name RETURN a.name, b.name")
String[] getSingleRepoDependencyTo(String name);
我知道这里的返回类型是错误的,因为它不能是字符串数组。但是,如何正确地得到包含两个字段的结果呢

我在网上搜索了很长时间,但找不到答案。此RX版本尚不支持“@QueryResult”批注


感谢您的帮助。

假设您有一个映射的
@Node
Repo
,其关系如下

@Node
public class Repo {
    // other things
    String name;
    @Relationship("REPO_DEPEND_ON") Repo repo;
}
…中定义此方法扩展了Neo4jRepository
, 你可以用

重要的是要记住,返回的值应该是节点和关系,以使其以这种方式工作

您还可以删除自定义查询并执行以下操作:

repodbyname(字符串名)

如果实体本身不需要在此存储库中使用
findByName

请查看此处:

它似乎列出了你想要的东西。从这些文件中:

interface NamesOnly {
        String getFirstName();
        String getLastName();
}

interface PersonRepository extends Neo4jRepository<Person, Long> {
        List<NamesOnly> findByFirstName(String firstName);
}
仅接口名称{
字符串getFirstName();
字符串getLastName();
}
接口PersonRepository扩展了Neo4jRepository{
列出findByFirstName(字符串名);
}

还有一些其他变体。

您可以在预期模型上使用annotation@QueryResult。例如,你可以这样做

DTO:

Neo4J存储:

public interface DomainObjectRepository extends Neo4jRepository<DomainObject, Long> {

 @Query("MATCH(n:SomeTable) RETURN someInt, sobj, sdouble, anObj") //Return a few columns
    Optional<SomeDto> getSomeDto();
}
公共接口DomainObjectRepository扩展了Neo4jRepository{
@Query(“MATCH(n:SomeTable)RETURN someInt、sobj、sdouble、anObj”)//返回一些列
可选的getSomeDto();
}

嘿。我知道已经5年了,很多事情都改变了,但是经过一些挖掘,只有你的问题与我的问题有关。你找到合适的解决方案了吗?
import org.springframework.data.neo4j.annotation.QueryResult;
@QueryResult
public class SomeDto {

    private int someInt;
    private SomeObject sobj;
    private double sdouble;
    private AnotherObject anObj;
    //getters setters
}
public interface DomainObjectRepository extends Neo4jRepository<DomainObject, Long> {

 @Query("MATCH(n:SomeTable) RETURN someInt, sobj, sdouble, anObj") //Return a few columns
    Optional<SomeDto> getSomeDto();
}