2015-11-13 4 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

Вы настраиваете право безопасности на весну? вам не нужно расширять JPARepsoitory, вы можете использовать его супер-тип и просто создавать репозиторий, в котором используется raw JDBC или что-то еще. С JPARepository Spring известно, как настроить сохранение JPA. Если вы используете raw JDBC, вам нужно будет настроить ваш bean-компонент с подключением db. Если вы знаете 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. Source

+1

Большое спасибо! Это спасло мой день! – topcan5

Смежные вопросы