2015-05-25 3 views
2

Есть ли способ поместить значение перечисления в имя метода с данными Spring? Это может быть сделано с @Query annotaion с чем-то вроде этого:Имя метода данных весны для перечисления

@Query("select t from Ticket as t where t.status != desk.enums.TicketStatus.CLOSED") 
    List<Ticket> findActiveTickets(); 

где статус перечисление. Но как это можно сделать только с использованием имен методов? Использование чего-то вроде List<Ticket> findByStatusIsNotClosed(); вызовет No property isNotClosed found for type TicketStatus.

Так как это можно сделать без использования @Query?

ответ

0

В настоящее время это невозможно с использованием Spring Data JPA. Имена методов преобразуются только с использованием обхода свойств, следовательно, вы получаете ошибку. Вы можете взглянуть на specifications, но это будет включать добавление другого вызова метода в ваш метод поиска.

+0

Мне было просто интересно, имеет ли он какой-либо специальный синтаксис (какая-то недостающая документация или что-то еще). конечно, это можно сделать со спецификациями. его можно даже выполнить без спецификации, просто добавив статус в качестве параметра и статус отправки из службы в тело метода. Я уже достиг этого с помощью @query. – alizelzele

1

Если вы используете Java 8, вы можете использовать ключевое слово default в интерфейсе для делегирования на более общий метод.

default List<Ticket> findActiveTickets() { 
    return findByTicketStatusNotIn(ImmutableList.of(TicketStatus.CLOSED)); 
} 

List<Ticket> findByTicketStatusNotIn(List<TicketStatus> status); 
Смежные вопросы