2016-01-30 3 views
1

Например, у меня есть объект User с полями id, active и еще 10. Как я могу получить всех активных пользователей? Легко:Загрузить свойство объекта с использованием методов запроса spring-data-jpa

public interface UserRepository extends JpaRepository<User, Integer> { 
    List<User> findAllByActiveTrue(); 
} 

Как я мог загрузить список id активных пользователей? Мне нужно @Query аннотацию писать JPQL по себе, как это:

public interface UserRepository extends JpaRepository<User, Integer> { 
    @Query("select u.id from User u where u.active = true") 
    List<Integer> fetchActiveUsersIds(); 
} 

Мой вопрос: могу ли я назвать как-то метод, чтобы не писать JQPL сам, как и в первом случае?

UPDATE

мне нужно что-то вроде этого:

public interface UserRepository extends JpaRepository<User, Integer> { 
    List<Integer> findAll_Id_ByActiveTrue(); 
} 
+0

Имя метода дается интерфейсом. Если вы измените имя, это ничего не изменит. –

+0

@RomanC Я имею в виду имя, которое генерирует запрос JPA, как в первом примере кода – AlexB

+0

http://stackoverflow.com/questions/30331767/spring-data-jpa-how-to-get-only-a-list-of -ids-from-findall-method – leeor

ответ

0

Я думаю, что это не возможно. Основной целью Repository является управление сохранением Доменные классы. Он не управляет свойствами самостоятельно. В Spring Data Repositories documentation вы можете найти список доступных методов для CrudRepository.

Вы можете написать свой запрос, используя property extensions, но он всегда возвращает доменный класс для неагрегированных методов.

Для конкретного случая использования вы упомянули, что вам нужно будет использовать аннотацию @Query.

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