首页 > 解决方案 > 将反射与 Spring JPARespository 方法一起使用时出现 NoSuchMethodException(例如:findByName)

问题描述

我正在尝试使用Spring Data JPA提供的JPA Query Methods实现多个过滤器。

动态过滤器,例如: findByNameContainingCreatedAtBefore

(例如:)findByName我使用 Java Reflection 从JPA Repository获取方法并动态调用。

Method method = institutionRepository.getClass().getMethod("findByName", String.class);

但是上面的行抛出NoSuchMethodException.

有没有办法解决上述问题?

标签: javaspringspring-bootreflectionspring-data-jpa

解决方案


我敢打赌您的源代码中没有findByName,您希望看到 spring-data-jpa 生成的方法。这不会发生,因为该方法不是由 spring 添加到存储库本身,而是添加到该存储库上的代理。这就是为什么它必须是一个 bean - 以便它可以被 spring 包装并使用代理来提供所有功能。


推荐阅读