【问题标题】:CrudRepository in spring春季的 CrudRepository
【发布时间】:2017-08-02 08:42:38
【问题描述】:

如何从数据库中获取所有对象

@RequestMapping(value="/test", method=RequestMethod.GET)
public ModelAndView recoverPass(@RequestParam("num") int num) {
    ModelAndView mv = new ModelAndView("test");
    mv.addObject("lists",appRepo.findAll(num));
    return mv;
}

我在浏览器中输入了http://localhost:8080/test?num=40,但没有结果。 错误是:CrudRepository 中的 findall 不能应用于 (int)

【问题讨论】:

    标签: java spring spring-mvc spring-boot


    【解决方案1】:

    Spring 中的 CrudRepository 没有一个名为 findAll() 的方法,它接受一个整数参数。不带参数的 findAll() 返回所有对象,而不仅仅是特定整数 id 的给定对象。

    你需要弄清楚你想要什么。如果你想要所有的对象,那么调用 findAll() 不带参数并去掉 int 参数。

    如果您只想查找具有给定整数 id 的特定对象,请改用 findOne(num)。

    【讨论】:

    • 谢谢,我想查找具有特定字段值的所有对象
    • @RayEn,那么你应该使用类似match query
    • @RayEn 如果你想这样做,那么你需要使用 Spring 数据查询方法。假设您的字段名为 foo 并带有 String 值,然后向您的 appRepo 接口添加一个名为 findByFoo(String foo) 的方法,Spring 数据将神奇地为您工作。
    【解决方案2】:

    我猜你想解决分页问题。在这种情况下,请使用 PagingAndSortingRepository 或 JpaRepository 而不是简单的 CrudRepository,因为在这种情况下,有一个 findAll(Pageable pageable) 方法可以满足您的需求。

    阅读:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.core-concepts

    【讨论】:

      【解决方案3】:

      Spring 中的 CrudRepository 只有 findAll() 方法,它可以返回表中的所有项目。 如果你想获得所有你应该使用的物品

      appRepo.findAll();
      

      或者您应该声明具有所需条件的方法:

      @Repository
      public interface AppRepo extends CrudRepository<Foo, Long> {
          List<Foo> findBySomeValue(String someValue);
      }
      

      并在你的逻辑中使用它appRepo.findBySomeValue('bar');

      【讨论】:

        【解决方案4】:

        我认为您正在尝试获取 id=40 的用户。如果您在 Spring Boot 中使用 Spring Data JPA,您可以创建一个存储库,例如 userRepository 并创建一个方法 findById() 来获取特定 ID 的用户。

        public interface UserRepository extends JpaRepository<User, Serializable>{
            User findById(Long id);
        }
        

        然后您可以在您的服务中自动连接UserRepository 并调用 findById() 方法。您也可以使用相同的UserRepository 对象通过调用 findAll() 方法获取所有用户列表。

        【讨论】:

          猜你喜欢
          • 2015-10-29
          • 1970-01-01
          • 2017-10-06
          • 2016-01-30
          • 1970-01-01
          • 2014-10-03
          • 2015-01-10
          • 2014-11-13
          • 2013-12-22
          相关资源
          最近更新 更多