Spring Data JPA - 如何将Query结果转换为实体类

Ans*_*mad 6 java orm spring jpql spring-data-jpa

我使用Spring Data JPA和spring boot应用程序.我有一个具有很少属性的实体类.考虑我有10个与该实体关联的属性User,我想只检索其中的几个(用户名,密码,名字,姓氏,电子邮件).

所以我编写了一个查询来只获取5个字段,但该方法不返回实体对象,而是返回一个普通对象.

如何将查询结果强制转换为Spring Data JPA中的实体?

@Query("select userName,password,firstName,lastName,email from User")
public List<User> getUsers();
Run Code Online (Sandbox Code Playgroud)

Mac*_*ski 5

您必须创建一个结果类,然后稍微更改查询:

package com.example;

public class ResultClass{

    String userName,password,firstName,lastName,email;

    public ResultClass(String userName, String password
          , String firstName, String lastName, String email){
         // set fields;
    }
}
Run Code Online (Sandbox Code Playgroud)

并查询:

@Query("select new com.example.ResultClass(userName,password
              ,firstName,lastName,email) from User")
public List<ResultClass> getUsers();
Run Code Online (Sandbox Code Playgroud)

选择的顺序必须与构造函数的顺序匹配。