首页 > 解决方案 > 使用 Spring Data JPA 从数据库中仅选择两个字段

问题描述

我想知道使用 Spring Data JPA 从数据库中仅恢复实体的两个字段的最佳实践。

基本上,我想避免在调用中恢复完整的实体对象。

我应该用这两个字段创建一个特定的类吗?有没有办法动态地做到这一点?

标签: hibernatejpaspring-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 数据文档


推荐阅读