Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring Data JPA - How to convert Query result to entity class

Am using Spring Data JPA with spring boot application. I have an entity class with few properties. Consider I have 10 properties associated with the entity User and I want to retrieve only few of them (username,password,firstname,lastname,email).

So I have wrote a query to get the 5 fields only, but the method does not return entity object, instead it returns a plain object.

How can I cast the query result to entity in Spring Data JPA ?

@Query("select userName,password,firstName,lastName,email from User")
public List<User> getUsers();
like image 547
Ansar Samad Avatar asked Nov 24 '17 10:11

Ansar Samad


1 Answers

You have to create a result class and then change the query a bit:

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

and query:

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

The order of selection must match the constructor ordering.

like image 125
Maciej Kowalski Avatar answered Sep 23 '22 15:09

Maciej Kowalski