我想知道使用Spring Data JPA从数据库中仅恢复实体的两个字段的最佳实践。
基本上,我想避免在调用中恢复整个实体对象。
我应该用这两个字段创建一个特定的类吗? 有没有办法动态地做到这一点?
答案 0 :(得分:2)
我应该用这两个字段创建一个特定的类吗?
是的,这是达到相同目的的最干净的方法之一。
您可以使用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数据docs。