首页 文章

找不到类型...自定义Spring数据存储库的属性

提问于
浏览
25

我正在尝试实现自定义Spring存储库 . 我有界面:

public interface FilterRepositoryCustom {
    List<User> filterBy(String role);
}

实施:

public class FilterRepositoryImpl implements FilterRepositoryCustom {
...
}

和“主”存储库,扩展我的自定义存储库:

public interface UserRepository extends JpaRepository<User, String>, FilterRepositoryCustom {
...
}

我正在使用Spring Boot,根据docs

默认情况下,Spring Boot将启用JPA存储库支持并查看@SpringBootApplication所在的包(及其子包) .

当我运行我的应用程序时,我收到此错误:

org.springframework.data.mapping.PropertyReferenceException:找不到类型User的属性filterBy!

2 回答

  • 44

    这里的问题是你正在创建 FilterRepositoryImpl 但是你在 UserRepository 中使用它 . 您需要创建 UserRepositoryImpl 才能使其正常工作 .

    Read this doc for more detail

    基本上

    public interface UserRepositoryCustom {
        List<User> filterBy(String role);
    }
    
    public class UserRepositoryImpl implements UserRepositoryCustom {
    ...
    }
    
    public interface UserRepository extends JpaRepository<User, String>, UserRepositoryCustom {
    ...
    }
    
  • -1

    旧方式:

    实体aThing = repository.findOne(1L);新方法:

    可选aThing = repository.findById(1L);

相关问题