我有一个Employee实体类,其中映射了Job实体。在控制器中,我想返回所有具有给定作业描述的作业的员工。我是怎么做到的目前我的代码返回空列表。
这是我的代码
public class Employee {
public int id;
public String name;
@ManyToOne()
@JoinColumn(name="JOB_ID", referencedColumnName="JOB_ID")
public Job job;
...
}
public class Job {
public int jobId;
public String desc; // job description
...
}
@Controller
public MyController {
// I want to filter employees when given Job desc property
@RequestMapping("/filter")
public ModelAndView filterBy(
@ModelAttribute("emp") Employee emp,
Pageable pageable, ModelMap model) {
ExampleMatcher matcher = ExampleMatcher.matching()
.withMatcher("name", match -> match.startsWith().ignoreCase());
Example<Employee> example = Example.of(emp, matcher);
Page<Employee> employeePage = employeeRepository.findAll(emp,
new PageRequest(pageable.getPageNumber(),
pageable.getPageSize(), null));
PageWrapper<Employee> page = new PageWrapper<Employee>(employeePage, "/employee");
model.addAttribute("employee", empPage.getContent());
model.addAttribute("page", page);
return new ModelAndView("employeePage", model);
}
}
感谢您的建议。
答案 0 :(得分:1)
很抱歉没有评论的声誉,所以将此作为答案发布
正如@JB Nizet建议在你的JPA Repository中为你的方法添加一个@Query,即employeeRepository
例如定义一个方法(方法名称可以是任何东西)
strict
答案 1 :(得分:0)
我已经解决了这个问题。通过示例的查询工作正常它只是一个实体属性不能为null所以我不得不添加忽略它。
.withIgnorePaths("job.property") <-- ignore property which is not null