Java 如何在SpringMVC中使用getById方法获取相应的名称?

Java 如何在SpringMVC中使用getById方法获取相应的名称?,java,spring,spring-mvc,spring-data-jpa,Java,Spring,Spring Mvc,Spring Data Jpa,我正在学习SpringMVC,我想通过id找到一辆车,但得到name作为回报 在我的服务类中,我调用一个通用方法getxxxbyd。这是JPA天生给我的东西 我知道我得到了整个实体,但我如何才能只接收到id对应的name 示例:我调用getCarById(2),它返回Tesla 我的桌子: id | Name ---------- 1 | Ford 2 | Tesla class CarService { // code ... public Optional<Ca

我正在学习SpringMVC,我想通过
id
找到一辆车,但得到
name
作为回报

在我的服务类中,我调用一个通用方法
getxxxbyd
。这是JPA天生给我的东西

我知道我得到了整个实体,但我如何才能只接收到
id
对应的
name

示例:我调用
getCarById(2)
,它返回
Tesla

我的桌子:

id | Name 
----------
1  | Ford      
2  | Tesla
class CarService {

// code ...

public Optional<CarEntity> getCarById(int id) {
    return carRepository.findById(id);
}
我的服务:

id | Name 
----------
1  | Ford      
2  | Tesla
class CarService {

// code ...

public Optional<CarEntity> getCarById(int id) {
    return carRepository.findById(id);
}
class服务{
//代码。。。
公共可选getCarById(int id){
返回carRepository.findById(id);
}

有两种方法可供选择

提出你自己的问题 您可以用JQPL编写自己的查询,只检索名称

例如,您可以在存储库中创建类似的方法

@Query("select t.name from CarEntity where id = ?1")
public String findNameById(Integer id);
有关Spring Data Jpa此功能的更多信息

投影 第二种选择是进行投影。正如在

Spring数据查询方法通常返回由存储库管理的聚合根的一个或多个实例。但是,有时可能需要对这些类型的某些属性进行投影。。Spring数据允许对专用返回类型进行建模,以便更有选择地检索这些类型的部分视图管理的聚合

简单地说,它允许您将查询结果聚合到某些有限的属性集中,而不是整个实体中

特别是对于您的需求,我建议使用第一种方法,但这两种方法都值得了解