Spring Data Rest id或链接href

时间:2017-03-03 17:55:46

标签: json spring-data pojo spring-rest

我正在使用Spring数据休息,我面临以下情况:

我有一个实体

@Entity
public class Role {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long roleId;

    @Column(unique = true, nullable = false)
    private String name;

}

我正在使用RepositoryRestResource:

@RepositoryRestResource
public interface RoleRepository extends CrudRepository<Role, Long> {

    Role findByRoleId(@Param("roleId") final Long roleId);

    Role findByName(@Param("roleName") final String roleName);
}

当我通过浏览器(http://localhost:9000/roles/1)拨打电话时,我看到了这个

{
name: "ROLE_SOMETHING",
_links: {
self: {
href: "http://localhost:9000/roles/1"
},
role: {
href: "http://localhost:9000/roles/1"
},
users: {
href: "http://localhost:9000/roles/1/users"
}
}
}

客户使用

   ResponseEntity<RoleView> forEntity = restTemplate.getForEntity("http://localhost:9000/roles/1", RoleView.class);
   RoleView body = forEntity.getBody();
   System.out.println(body.getName());

RoleView是Role实体的表示,但在调用方客户端。

现在,json响应中没有roleId。我不知道为什么,因为我没有使用默认的名称ID。

我希望RoleView对象以某种方式获得id。可以通过roleId或者通过链接_self - &gt; HREF。

我更喜欢链接_self方式,因为它似乎更接近于json响应,而不是公开Id的。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

目前我正在寻求解决方案:

@Configuration
public class MyConfiguration extends RepositoryRestConfigurerAdapter {

    @Override
    public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
        config.exposeIdsFor(Role.class);
    }
}

虽然我期待其他类型的解决方案