2014-01-14 12 views
7

Springでは、メソッド名からクエリ生成をオフにすることはできますか?Spring JPAのメソッド名からクエリ作成をオフにする方法は?

は、私は春のセキュリティは、メソッド名から生成するクエリはそうのような明示的@queryアノテーションを使用してくださいオフになっているというエラーを生成したいと思うインターフェイス

public interface UserRepository extends Repository<User, Long> { 

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

を考えます。

私は、クエリを読んで、起こっているのではなく、クエリが春データがということであるものにメソッド名を読み取り、翻訳されたかを知ることが容易であると思うので、自動クエリ生成をオフにしたい
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はもっと読みやすいですか?

Spring JPAのメソッド名からクエリ作成をオフにする方法はありますか?

答えて

5

query-lookup-strategyは、コンフィギュレーション内のrepositoriesタグで指定できます。

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

User.javadocumentation

を参照してください

@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); 
} 
関連する問題