在Spring Data中是否可以从方法名称关闭查询生成?
鉴于界面
public interface UserRepository extends Repository{ List findByEmailAddressAndLastname(String emailAddress, String lastname); }
我希望spring security能够产生一个错误,说明从方法名称生成查询已被关闭,请使用显式@Query注释,如此.
public interface UserRepository extends Repository{ @Query("select u from User u where u.emailAddress = ?1 and u.lastname = ?2") List findByEmailAddressAndLastname(String emailAddress, String lastname); }
我想关闭自动查询生成,因为我认为更容易阅读查询并知道发生了什么,而不是阅读方法名称并转换为Spring数据将生成的查询,同样在大型团队中有很多开发人员可能还不熟悉Spring数据@Query更具可读性?
如何从Spring JPA中的方法名称关闭查询创建?
您可以指定query-lookup-strategy
在repositories
配置中的标签.
<repositories query-lookup-strategy="use-declared-query"/>
请参阅文档
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); }