2015-11-13 6 views
6
public interface UserRepository extends JpaRepository<User, Long> { 

    @Query(value = "SELECT * FROM USERS WHERE EMAIL_ADDRESS = ?0", nativeQuery = true) 
    User findByEmailAddress(String emailAddress); 
} 

ここでは、ユーザーから*を選択した場所に上記のコードがあるとします。このメソッドがUserオブジェクトを返さないようにするにはどうすればよいですか。カスタムオブジェクトMyUserにデータを手動でマップする方法はありますか? UserRepositoryインターフェイスでこれをすべて行うことはできますか?SpringDataJPA:ネイティブクエリを使用したカスタムデータマッピング

ありがとうございます!

+0

あなたはSpring Securityの権利を設定していますか? JPARepsoitoryを拡張する必要はありません。スーパータイプを使用し、raw JDBCなどを使用するリポジトリを作成するだけです。 JPARepositoryでは、SpringはJPA永続化をセットアップする方法を知っています。 raw JDBCを使用する場合は、db接続を使用してBeanを構成する必要があります。 JPAを知っていれば、JPAを設定してクエリを値オブジェクトにマッピングするか、カスタムエンティティクラス階層をユーザーテーブルのセットにマップすることができますか?Springはすべて、オブジェクトを構成し、インターフェイスを実装するだけで、 。 – simbo1905

答えて

12

あなたがマッピングを行う必要があり、この

@Query(value = "SELECT YOUR Column1, ColumnN FROM USERS WHERE EMAIL_ADDRESS = ?0", nativeQuery = true) 
List<Object[]> findByEmailAddress(String emailAddress); 

ような何かを行うことができます。 Springのデータリポジトリも見てみましょう。 Source

+1

大きなおかげで!それは私の一日を救った! – topcan5

関連する問題