首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Spring Data Neo4j RX返回多个字段?

如何使用Spring Data Neo4j RX返回多个字段?
EN

Stack Overflow用户
提问于 2020-07-16 07:46:00
回答 3查看 378关注 0票数 3

我使用的是Spring Data Neo4j RX。我有一个这样的查询:

代码语言:javascript
复制
@Query("MATCH (a:Repo)-[:REPO_DEPEND_ON]->(b:Repo) WHERE a.name= $name RETURN a.name, b.name")
String[] getSingleRepoDependencyTo(String name);

我知道这里的返回类型是错误的,因为它不能是字符串数组。但是我怎样才能正确地得到包含两个字段的结果呢?

我在网上搜索了很长一段时间,但没有找到答案。此RX版本尚不支持"@QueryResult“注释。

谢谢你的帮助。

EN

回答 3

Stack Overflow用户

发布于 2020-07-17 05:19:09

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

代码语言:javascript
复制
@Node
public class Repo {
    // other things
    String name;
    @Relationship("REPO_DEPEND_ON") Repo repo;
}

...extends Neo4jRepository<Repo,...>中定义此方法时,您可以使用Projections

代码语言:javascript
复制
public interface RepoProjection {

    String getName();

    DependingRepo getRepo();

    /**
     * nested projection
     */
    interface DependingRepo {
        String getName();
    }
}

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

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

RepoProjection findByName(String name)

如果您不需要在此存储库中为实体本身创建findByName

票数 0
EN

Stack Overflow用户

发布于 2020-09-05 08:05:31

看看这里:https://neo4j.github.io/sdn-rx/current/#projections.interfaces

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

代码语言:javascript
复制
interface NamesOnly {
        String getFirstName();
        String getLastName();
}

interface PersonRepository extends Neo4jRepository<Person, Long> {
        List<NamesOnly> findByFirstName(String firstName);
}

还有一些其他的变体。

票数 0
EN

Stack Overflow用户

发布于 2021-03-14 02:57:04

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

DTO:

代码语言:javascript
复制
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
}

Neo4jRepository:

代码语言:javascript
复制
public interface DomainObjectRepository extends Neo4jRepository<DomainObject, Long> {

 @Query("MATCH(n:SomeTable) RETURN someInt, sobj, sdouble, anObj") //Return a few columns
    Optional<SomeDto> getSomeDto();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62925321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档