如何在Spring JPA中获取特定的列?

我可以通过findAll()从数据库获取以下数据

[
   { id : 1,name : "John",age : "23",sex : "male"
   },{ id : 2
...

]


我想做的是从数据库中获取特定数据,如下所示。

[ 
   { id : 1,name : "John"
   },{ id : : 1,name : "Peter"
   }
...
]

所以我尝试了这样。

存储库

@Repository
public interface PersonDAO extends JpaRepository<Person,Integer> {

    @Query(value ="select p.id,p.name from person p",nativeQuery = true)
    Collection<Object> getPersonIdAndName();
}


控制器

@GetMapping ("/getPersonIdAndName")
    public Collection<Object> getPerson() {
        return personDAO.getPersonIdAndName();
    }


但是结果是这样的(邮递员)

[
    [
        1,"John"
    ],[
        2,"Peter"
    ]
....
]


我需要类型key : value,而不仅仅是值,
因为我想将其获取到React.js状态。
我该如何解决? 多谢您的帮助

map712 回答:如何在Spring JPA中获取特定的列?

您需要使用投影。创建一个新界面

public interface PersonProjection {

    Integer getId();

    String getName();

}

之后,在存储库中使用返回类型的投影

@Repository
public interface PersonDAO extends JpaRepository<Person,Integer> {

    @RestResource(exported = false)
    Query("select p.id,p.name from Person as p")
    Collection<PersonProjection> getPersonIdAndName();
}

或者,如果您想@Override findAll()方法,则可以创建一个自定义的存储库。这里有一个GitHub回购示例https://github.com/federicogatti/Spring-Custom-Repository-Example

本文链接:https://www.f2er.com/3057554.html

大家都在问