2017-11-24 17 views
1

スプリングデータJPAをスプリングブートアプリケーションで使用していますか?私はいくつかのプロパティを持つエンティティクラスを持っています。私はエンティティUserに関連付けられた10のプロパティがあり、それらのうちのほんの少数(ユーザ名、パスワード、ファーストネーム、ラストネーム、電子メール)を取得したいと考えてください。スプリングデータJPA - クエリ結果をエンティティクラスに変換する方法

私は5つのフィールドだけを取得するためにクエリを書きましたが、メソッドはエンティティオブジェクトを返さず、代わりにプレーンオブジェクトを返します。

SpringデータJPAでクエリ結果をエンティティにキャストするにはどうすればよいですか?

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

「JPQL」の参照を参照してください。これは "春"とは関係ありません – DN1

+0

@ DN1答えは@だけではないかもしれません。 – pirho

答えて

3

あなたは結果クラスを作成し、クエリを少し変更する必要があります。

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(); 

選択の順序はコンストラクタの順序と一致する必要があります。

+0

これは 'JPQL'の正しい方法です。 @ ansar-samad 'CriteriaQuery'に変更することに興味があれば、ここで投影を行う方法を確認してください[列挙型フィールドを持つ' Entity'で 'JPA'''''' CriteriaQuery'を使ってDTOクラス文字列フィールドを入れる方法?](https: /stackoverflow.com/questions/47409619/how-to-populate-dto-class-string-fields-using-jpa-criteriaquery-onentity-having) – pirho

関連する問題