如何从Spring JPA中的方法名称关闭查询创建?

ams*_*ams 7 java spring spring-data spring-data-jpa

在Spring Data中是否可以从方法名称关闭查询生成?

鉴于界面

public interface UserRepository extends Repository<User, Long> {

  List<User> findByEmailAddressAndLastname(String emailAddress, String lastname);
}
Run Code Online (Sandbox Code Playgroud)

我希望spring security能够产生一个错误,说明从方法名称生成查询已被关闭,请使用显式@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);
}
Run Code Online (Sandbox Code Playgroud)

我想关闭自动查询生成,因为我认为更容易阅读查询并知道发生了什么,而不是阅读方法名称并转换为Spring数据将生成的查询,同样在大型团队中有很多开发人员可能还不熟悉Spring数据@Query更具可读性?

如何从Spring JPA中的方法名称关闭查询创建?

Kev*_*sox 6

您可以指定query-lookup-strategyrepositories配置中的标签.

<repositories query-lookup-strategy="use-declared-query"/>
Run Code Online (Sandbox Code Playgroud)

请参阅文档

User.java

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


}
Run Code Online (Sandbox Code Playgroud)

UserRepository.java

public interface UserRepository extends Repository<User, Long> {

  List<User> findByEmailAddressAndLastname(String emailAddress, String lastname);
}
Run Code Online (Sandbox Code Playgroud)