相关疑难解决方法(0)

使用spring-data-jpa和spring-mvc过滤数据库行

我有一个spring-mvc项目,它使用spring-data-jpa进行数据访问.我有一个域对象Travel,我想让最终用户对它应用一些过滤器.

为此,我实现了以下控制器:

@Autowired
private TravelRepository travelRep;

@RequestMapping("/search")  
public ModelAndView search(
        @RequestParam(required= false, defaultValue="") String lastName, 
        Pageable pageable) {  
    ModelAndView mav = new ModelAndView("travels/list");  
    Page<Travel> travels  = travelRep.findByLastNameLike("%"+lastName+"%", pageable);
    PageWrapper<Travel> page = new PageWrapper<Travel>(travels, "/search");
    mav.addObject("page", page);
    mav.addObject("lastName", lastName);
    return mav;
}
Run Code Online (Sandbox Code Playgroud)

这很好用:用户有一个带有lastName输入框的表单,可以用来过滤旅行.

除了lastName之外,我的Travel域对象还有很多我想要过滤的属性.我认为如果这些属性都是字符串,那么我可以将它们添加为@RequestParams并添加一个spring-data-jpa方法来进行查询.例如,我添加了一个方法findByLastNameLikeAndFirstNameLikeAndShipNameLike.

但是,当我需要过滤外键时,我不知道该怎么做.所以我Travel有一个period属性是Period域对象的外键,我需要将它作为下拉列表供用户选择Period.

我想要做的是当句点为空时我想要检索由lastName过滤的所有旅行,当句点不为空时我想要检索由lastName过滤的这段时间的所有旅行.

我知道如果我在我的存储库中实现两个方法并使用一个if到我的控制器,这可以做到:

public ModelAndView search(
       @RequestParam(required= false, defaultValue="") String lastName,
       @RequestParam(required= false, defaultValue=null) Period period, 
       Pageable …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc spring-data spring-data-jpa

46
推荐指数
1
解决办法
5万
查看次数

标签 统计

java ×1

spring ×1

spring-data ×1

spring-data-jpa ×1

spring-mvc ×1