java - Spring MVC中如何使用getById方法获取对应的名字?
问题描述
我正在学习 Spring MVC,我想通过 an 找到一辆车,id
但作为回报name
。
在我的服务类中,我调用了一个通用方法getXXXById
。这是 JPA 天生赋予我的东西。
我知道我得到了整个实体,但我怎样才能收到对应name
的id
.
示例:我打电话getCarById(2)
给我Tesla
。
我的表:
id | Name
----------
1 | Ford
2 | Tesla
我的服务:
class CarService {
// code ...
public Optional<CarEntity> getCarById(int id) {
return carRepository.findById(id);
}
解决方案
有两种选择可以做到这一点。
进行自己的查询
您可以在 JQPL 中编写自己的查询来仅检索名称。
例如,您可以在存储库中创建类似的方法。
@Query("select t.name from CarEntity where id = ?1")
public String findNameById(Integer id);
有关 Spring Data Jpa 的此功能的更多信息HERE
预测
第二种选择是进行投影。正如文档中所写
Spring Data 查询方法通常返回由存储库管理的聚合根的一个或多个实例。但是,有时可能更希望对这些类型的某些属性进行投影。Spring Data 允许对专用返回类型进行建模,以更有选择性地将部分视图检索到托管聚合上。
简而言之,它允许您将结果表单查询聚合到一些有限的属性集而不是整个实体中。
专门针对您的需求,我建议使用第一种方法,但两者都值得了解。
推荐阅读
- node.js - 如何通过 NodeJS(即通过“npm install”)下载 Doxygen for C++?
- javascript - 在页面中呈现带有 HTML 标记的文本
- regex - 如何制作一个将一组频率与另一组频率进行比较的正则表达式模式
- python - Tensorflow - 一步一步调试 C++ 代码
- java - 如何在 Eclipse 的上下文菜单(包资源管理器)下带来子菜单或命令?
- java - 在运行时将 String 转换为正确的 avro 类型
- android - 如何仅在一个特定片段的底部应用程序栏中显示一个摇篮的 FAB?
- c# - 我有两个datagridview,一个在员工电话上,我想让另一个包含打电话的员工人数
- python - 创建一个对数字列表应用激活函数的函数
- plot - 如何绘制以下 3D Matlab 绘图/图形?