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

标签 java spring spring-data spring-data-jpa

在 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"/>

参见 documentation

用户.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/

相关文章:

java - 我可以在 Java 中创建没有条件的 1 到 64 位位掩码吗?

java - 我如何在java中迭代TwoDHashMap?

java - 无法让 Android WebView 的 postUrl 与端口一起使用

java - 是否可以在没有 BTM 的情况下使用 bitronix PoolingDataSource?

java - 如何使用 Spring Security 正确获取与用户关联的 GrantedAuthority 列表?

java - 将提取大小设置为负数

java - 用于 GET 参数的 Ant 匹配器

spring-data - Kotlin 中扩展对象的新实例

java - 自定义 Spring Data JPA 构造函数异常

java - Spring Data JPA Repository Queries - 如何将@Param 值映射到多个参数类型