2015-11-13 33 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就可以使用它的超類型,只需創建一個使用原始JDBC或其他類型的存儲庫。使用JPARepository Spring知道如何設置JPA持久性。如果您使用原始JDBC,則需要使用db連接來配置您的bean。如果您知道JPA,那麼確定您可以將JPA配置爲將查詢映射到值對象或將自定義實體類層次結構映射到一組用戶表,Spring則是關於配置對象並使用接口來實現接口並使用Spring將它們連接起來。 – simbo1905

回答

12

你可以做這樣的事情

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

你所要做的映射。看看Spring Data Repository也是一樣。 Source

+1

非常感謝!這節省了我的一天! – topcan5