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

时间:2017-11-24 10:35:41

标签: java spring orm spring-data-jpa jpql

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

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

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

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

2 个答案:

答案 0 :(得分:4)

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

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;
    }
}

和查询:

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

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

答案 1 :(得分:0)

如果您的Target类不是实体类,并且您需要解析,请参考以下答案。

ANSWER