如何使用 DAO 在 Spring Boot 查询中返回特定对象属性?

问题描述

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

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

在DAO类中,我有一个方法

List<Person> findAllByEmail(String email);

查询数据库并返回人员列表。

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

long id;
String email;

不返回整个对象。

这相当于执行查询

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

但我想将函数查询保持在 DAO 中

List<Person> findAllByEmail(String email);

无需手动编写查询

我该怎么做?

解决方法

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

,

您可以使用JPA Projections

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...