如何获取 Spring JPA 中的特定列?
how to get specific column in Spring JPA?
我可以通过 findAll()
从 db
获取以下数据
[
{ 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 状态。
我该如何解决?
非常感谢你的帮助
您需要使用投影。创建新接口
public interface PersonProjection {
Integer getId();
String getName();
}
之后在你的存储库中使用return类型的投影
@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
我可以通过 findAll()
从 db
[
{ 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 状态。
我该如何解决?
非常感谢你的帮助
您需要使用投影。创建新接口
public interface PersonProjection {
Integer getId();
String getName();
}
之后在你的存储库中使用return类型的投影
@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