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

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

Diciamo che ho il codice sopra dove seleziono * dall'utente. Cosa devo fare se non voglio che questo metodo restituisca l'oggetto User. C'è un modo per mappare manualmente i dati su un oggetto personalizzato MyUser? Posso fare tutto questo nell'interfaccia UserRepository?SpringDataJPA: mappatura dati personalizzata con Native Query

Grazie!

+0

Si sta configurando Spring Security, giusto? non è necessario estendere JPARepsoitory, è possibile utilizzare il suo super-tipo e creare semplicemente un repository che utilizzi JDBC raw o altro. Con JPARepository Spring sa come impostare la persistenza JPA su. Se si utilizza JDBC non elaborato, è necessario configurare il bean con la connessione db. Se sai che JPA è sicuro di poter configurare JPA per mappare le query in oggetti valore o mappare una gerarchia di classi di entità personalizzate su un set di tabelle utente, Spring è tutto sulla configurazione degli oggetti e sull'uso delle interfacce, basta implementare le interfacce e avere Spring collegarle . – simbo1905

risposta

12

si può fare qualcosa di simile

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

Devi fare la mappatura. Dai un'occhiata anche al repository dei dati di primavera. Source

+1

Grazie! Questo mi ha salvato la giornata! – topcan5

Problemi correlati