hibernate - 使用 Spring Data JPA 从数据库中仅选择两个字段
问题描述
我想知道使用 Spring Data JPA 从数据库中仅恢复实体的两个字段的最佳实践。
基本上,我想避免在调用中恢复完整的实体对象。
我应该用这两个字段创建一个特定的类吗?有没有办法动态地做到这一点?
解决方案
我应该用这两个字段创建一个特定的类吗?
是的,这是实现相同目标的最干净的方法之一。
您可以使用 Spring Data JPA (doc)中的预测。在您的情况下,创建接口:
interface ProjectIdAndName{
String getId();
String getName();
}
并将以下方法添加到您的存储库
List<ProjectIdAndName> findAll();
否则,如果您想通过查询进行查询,则可以遵循以下本机查询方法。
您可以nativeQuery = true
在这样的类中设置@Query
注释:Repository
public static final String FIND_PROJECTS = "SELECT projectId, projectName FROM projects";
@Query(value = FIND_PROJECTS, nativeQuery = true)
public List<Object[]> findProjects();
请注意,您必须自己进行映射。除非你真的只需要这两个值,否则像这样使用常规映射查找可能更容易:
public List<Project> findAll()
可能也值得查看 Spring 数据文档。
推荐阅读
- sql - 使用 Laravel Eloquent 一次返回多个表列和另一列的总和
- android - Android-studio 布局预览工具如何准确处理“@+id”和“@id”?
- python-3.x - 哪种方法 dm 或 dbow 适用于使用 Doc2Vec 的文档相似性?
- c# - 多次调用 File.AppendAllLines 并在 Visual Studio 中打开文件时出现间歇性文件锁定异常
- java - 如何将表单数据输入角度控制器以及如何将其传递给 serlvet?
- c - 这个 clear_mem 函数的目的是什么?
- laravel - beforeEach 中的 next() 函数不起作用 router.beforeEach vue js
- node.js - 初学者:不了解 Tensorflow.js 上的形状 [,1]
- python-3.x - 从 python3 - pyodbc (linux) 连接到远程机器上的 firebird 2.5 (windows) ODBC DSN
- java - 如何在 Appium 中禁用 Android 设备上的 wi-fi?