【发布时间】:2017-09-19 05:43:14
【问题描述】:
我正在尝试在名为 Institute 的实体类上应用投影。
我定义了以下投影类。
@Projection(name = "instituteProjection", types = { Institute.class })
public interface InstituteProjection {
String getOrganizationName();
Contact getContact();
Address getRegisteredAddress();
Address getMailingAddress();
}
我遵循了 Oliver Gierke link 的回答,并且能够在调用 http://localhost:8080/institutes 时返回带有投影的集合资源。我通过在服务层实现以下方法,然后使用 REST 控制器调用它来做到这一点。
@Autowired
private ProjectionFactory projectionFactory;
@Autowired
InstituteTypeRepository instituteTypeRepo;
@Override
public PagedResources<Institute> getAllInstitutes(Pageable page) {
Page<?> instituteList = instituteRepo.findAll(page).
map(institute -> projectionFactory.createProjection(InstituteListProjection.class, institute));
PagedResources<Institute> instituteListPaged = pagedResourcesAssembler.toResource(instituteList);
return instituteListPaged;
}
现在,当调用 http://localhost:8080/institutes/1 时,如何将相同的投影应用于项目资源?
更新 1:
获取单个资源的控制器方法
@RequestMapping(value = "institutes/{instituteId}", method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> getInstitute(@PathVariable Long instituteId) {
Institute institute = service.getInstitute(instituteId);
return new ResponseEntity<>(institute, HttpStatus.OK);
}
更新 2:
从存储库中获取单个资源的服务层方法
@Override
public Institute getInstitute(Long instituteId) {
Institute institute = instituteRepo.findOne(instituteId);
return institute;
}
【问题讨论】:
-
你看我的回答了吗?有帮助吗?
-
你能用控制器逻辑更新问题吗
标签: java spring spring-mvc spring-data-rest