2014-01-14 1 views
7

В Spring Data можно отключить генерацию запросов от имен методов?Как отключить создание запроса из имен методов в Spring JPA?

Учитывая интерфейс

public interface UserRepository extends Repository<User, Long> { 

    List<User> findByEmailAddressAndLastname(String emailAddress, String lastname); 
} 

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

public interface UserRepository extends Repository<User, Long> { 

    @Query("select u from User u where u.emailAddress = ?1 and u.lastname = ?2") 
    List<User> findByEmailAddressAndLastname(String emailAddress, String lastname); 
} 

Я хочу, чтобы отключить автоматическое формирование запроса, потому что я думаю, что это легче читать запрос и узнать, что происходит, а не читать название метода и перевод к тому, что запрос, что данные весна генерировать, также в большой команде с большим количеством разработчиков, некоторые из которых, возможно, еще не знакомы с весенними данными, @Query намного читабельнее?

Как отключить создание запроса из имен методов весной JPA?

ответ

5

Вы можете указать query-lookup-strategy в теге repositories в конфигурации.

<repositories query-lookup-strategy="use-declared-query"/> 

См documentation

User.java

@Entity 
@NamedQuery(name="User.findByEmailAddressAndLastName", 
    query="select u from User u where u.emailAddress = ?1 and u.lastname = ?2") 
public User{ 


} 

UserRepository.java

public interface UserRepository extends Repository<User, Long> { 

    List<User> findByEmailAddressAndLastname(String emailAddress, String lastname); 
}