CrudRepository在春天

时间:2017-08-02 08:42:38

标签: java spring spring-mvc spring-boot

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

@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)

4 个答案:

答案 0 :(得分:1)

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

你需要找出你想要的东西。如果你想要所有对象,那么调用不带参数的findAll()并删除int参数。

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

答案 1 :(得分:0)

我想你想解决分页问题。在这种情况下,使用PagingAndSortingRepository或JpaRepository而不是简单的CrudRepository,因为在这种情况下有一个findAll(Pageable pageable)方法可以完全按照你想要的那样。

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

答案 2 :(得分:0)

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

appRepo.findAll();

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

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

并在您的逻辑appRepo.findBySomeValue('bar');

中使用它

答案 3 :(得分:0)

我认为您正在尝试使用id = 40的用户。如果您使用spring数据jpa和spring boot,则可以创建一个名为preresponse.Where(x => x.hotels.Any(h => h.Travellers.Any(t => t.FullName.ToLower().Contains(request.SearchText) || t.FirstName.ToLower().Contains(request.SearchText) || t.LastName.ToLower().Contains(request.SearchText) || t.EmailAddress.ToLower().Contains(request.SearchText))) || x.cars.Any(c => c.Travellers.Any(t => t.FullName.ToLower().Contains(request.SearchText) || t.FirstName.ToLower().Contains(request.SearchText) || t.LastName.ToLower().Contains(request.SearchText) || t.EmailAddress.ToLower().Contains(request.SearchText))) || x.tours.Any(s => s.Travellers.Any(t => t.FullName.ToLower().Contains(request.SearchText) || t.FirstName.ToLower().Contains(request.SearchText) || t.LastName.ToLower().Contains(request.SearchText) || t.EmailAddress.ToLower().Contains(request.SearchText))) || x.flights.Any(f => f.Travellers.Any(t => t.FullName.ToLower().Contains(request.SearchText) || t.FirstName.ToLower().Contains(request.SearchText) || t.LastName.ToLower().Contains(request.SearchText) || t.EmailAddress.ToLower().Contains(request.SearchText))) ).ToList(); 的存储库,并创建一个方法findById()以获取特定id的用户。

userRepository

然后,您可以在服务中自动装配public interface UserRepository extends JpaRepository<User, Serializable>{ User findById(Long id); } 并调用findById()方法。您也可以使用相同的UserRepository对象通过调用findAll()方法获取所有用户列表。