如何 return spring 中的特定对象属性使用 DAO 引导查询?

How to return specific object attributes in spring boot queries with DAO?

在我的 Spring 引导应用程序中,我有一个名为 Person.class 的实体,其中包含

long id;
String email;
String name;
String surname;
String address;

在DAO class中,我有一个方法:

List<Person> findAllByEmail(String email);

查询数据库和return一个人的列表。

我想要 return 一个只有一些属性的 Person 列表,例如:

long id;
String email;

没有 return 整个对象。

这相当于执行查询:

"select id, email from person where email = ?"

但我想将函数查询维护到 DAO 中作为

List<Person> findAllByEmail(String email);

无需手写查询。

我该怎么做?

不可能从一个方法返回多个值。在您的调用方法中,当迭代返回的 List<Person> 时,您应该从 List 中的每个 Person 读取所需的字段到局部变量中并使用它们。

您可以使用JPA Projections

  1. 使用所需列的 getter 创建接口
interface WithIdAndEmail {
   long getId();
   String getEmail();
}
  1. 将该接口用作方法的 return 类型
List<WithIdAndEmail> findAllByEmail(String email);