Spring Data JPA - 如何将查询结果转换为实体 class
Spring Data JPA - How to convert Query result to entity class
正在使用 Spring Data JPA 和 spring 引导应用程序。我有一个属性很少的实体 class。假设我有 10 个属性与实体 User
关联,我只想检索其中的几个(用户名、密码、名字、姓氏、电子邮件)。
所以我写了一个查询来只获取 5 个字段,但是该方法没有 return 实体对象,而是 return 一个普通对象。
如何将查询结果转换为 Spring Data JPA 中的实体?
@Query("select userName,password,firstName,lastName,email from User")
public List<User> getUsers();
您必须创建一个结果 class 然后稍微更改查询:
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();
选择的顺序必须与构造函数的顺序相匹配。
如果你的目标class不是实体class而你需要解析,请参考下面的答案..
ANSWER
正在使用 Spring Data JPA 和 spring 引导应用程序。我有一个属性很少的实体 class。假设我有 10 个属性与实体 User
关联,我只想检索其中的几个(用户名、密码、名字、姓氏、电子邮件)。
所以我写了一个查询来只获取 5 个字段,但是该方法没有 return 实体对象,而是 return 一个普通对象。
如何将查询结果转换为 Spring Data JPA 中的实体?
@Query("select userName,password,firstName,lastName,email from User")
public List<User> getUsers();
您必须创建一个结果 class 然后稍微更改查询:
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();
选择的顺序必须与构造函数的顺序相匹配。
如果你的目标class不是实体class而你需要解析,请参考下面的答案..
ANSWER