我使用spring boot,像这样从数据库查询:
@Repository
public interface MyRepository extends CrudRepository<MyEntity, Integer> {
List<MyEntity> findAllByIdIn(List<Integer> ids);
}
我想动态调用此方法“ findAllByIdIn”:
Object bean = context.getBean("myRepository");
bean.getClass().getMethod("findAllByIdIn").invoke(bean, ids);
我有一个例外:
java.lang.NoSuchMethodException: com.sun.proxy.$Proxy145.findAllByIdIn()
如何调用该方法?
答案 0 :(得分:2)
getMethod接受2个参数。第一个是方法名称,第二个是方法参数类型的vararg。
您的代码尝试获取不带参数的findAllByIdIn
方法,但是您的存储库中没有。
因此解决方法是:
bean.getClass().getMethod("findAllByIdIn", List.class)
答案 1 :(得分:1)
从错误.lib
可以清楚地看出,您的代码正在尝试获取没有参数的方法,而该方法实际上是不存在的。
所以也尝试传递参数,因为它期望像下面这样的参数。
java.lang.NoSuchMethodException: com.sun.proxy.$Proxy145.findAllByIdIn()