如何解决在RepresentationModelAssembler中使用投影
在Spring Boot 2.3应用程序中,我使用Spring Data REST,Spring HATEOAS,Spring JPA,Hibernate等。
在REST控制器中,我获得了一个页面实体列表,这些实体不是来自Jpa存储库而是来自另一个来源。
@PostMapping(path = "/frames/searches")
public ResponseEntity<?> search(@RequestBody List<Filter> filters,Pageable pageable) {
Page<Frame> pageResult = frameService.search(filters,null,pageable);
return new ResponseEntity<>(pagedResourcesAssembler.toModel(pageResult,frameResourceAssembler),HttpStatus.OK);
}
由于这个和其他原因,我有一个自定义RepresentationModelAssembler
:
@Component
public class FrameResourceAssembler implements RepresentationModelAssembler<Frame,EntityModel<Frame>> {
@Autowired
private EntityLinks entityLinks;
@Autowired
private BasePathAwareLinks service;
@Override
public EntityModel<Frame> toModel(Frame object) {
EntityModel<Frame> resource = new EntityModel<Frame>(object);
resource.add(entityLinks.linkToItemResource(object.getClass(),object.getSearchKey()).withRel("self"));
//********************************************************************
// AVAILABILITY
//********************************************************************
LinkBuilder linkBuilder = service.underBasePath(WebMvcLinkBuilder
.linkTo(WebMvcLinkBuilder.methodOn(ProductAvailabilityController.class).searchByFrame(object.getSearchKey(),null)));
resource.add(linkBuilder.withRel("availability"));
return resource;
}
}
这很好用,但我想返回该实体的投影。我创建了这个投影:
@Projection(name = "image",types = {Frame.class})
public interface FrameImageProjection {
ProductType getProductType();
String getSearchKey();
String getSku();
String getBarcode();
String getManufacturer();
String getImageUrl();
String getThumbUrl();
}
,但是当然不会自动应用。我看到了DefaultExcerptProjector
,但似乎需要Repository
才能起作用。
如何返回我的bean的投影,而不是返回具有所有字段的整个bean的投影?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。