在 Spring Data 中是否可以关闭方法名称的查询生成?
给定界面
public interface UserRepository extends Repository<User, Long> {
List<User> findByEmailAddressAndLastname(String emailAddress, String lastname);
}
我希望 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);
}
我想关闭自动查询生成,因为我认为阅读查询并知道发生了什么比阅读方法名称并转换为 Spring 数据将生成的查询更容易,同样在一个拥有许多开发人员的大型团队,其中一些人可能还不熟悉 spring 数据 @Query 是否更具可读性?
如何在 Spring JPA 中关闭从方法名称创建查询?
最佳答案
您可以在配置中的repositories
标签上指定query-lookup-strategy
。
<repositories query-lookup-strategy="use-declared-query"/>
用户.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);
}
关于java - 如何在 Spring JPA 中关闭从方法名称创建查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21104434/