有没有办法为Spring Data REST中的实体关联生成链接?

时间:2018-05-31 08:01:08

标签: java spring-data-rest spring-hateoas

我使用Spring Data REST构建我的应用程序。它到目前为止一直运作良好,但我还想在返回的实体中添加一些自定义项,同时仍保留自动生成的链接。

我想做这样的事情:

@RepositoryRestController
public class SomeController {

    @GetMapping("/entity/{id}")
    public SomeEntity getEntity(@PathVariable int id)
        SomeEntity entity = SpringDataREST.findById(id); //-> is there a way to do this?

        Link randomLink = generateRandomLink();
        entity.addLink(randomLink);

        //do other stuff with entity

        return entity;
    }
}

SomeEntity类延伸Spring HATEOAS ResourceSupport

1 个答案:

答案 0 :(得分:0)

如果您使用的是Spring Data REST,则可以使用RepositoryEntityLinks以编程方式创建链接:

@Component
public class MyBean {

    private final RepositoryEntityLinks entityLinks;

    public MyBean(RepositoryEntityLinks entityLinks) {
        this.entityLinks = entityLinks;
    }

    public Link someMethod(MyEntity entity) {
        //... 
        return entityLinks.linkToSingleResource(entity)
    }
}

注意 - 要使用linkToSingleResource方法,MyEntity必须实现Identifiable接口。相反,您可以使用方法linkForSingleResource

return entityLinks.linkForSingleResource(MyEntity.calss, entity.getId())