我正在使用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的。
有人能指出我正确的方向吗?
答案 0 :(得分:0)
目前我正在寻求解决方案:
@Configuration
public class MyConfiguration extends RepositoryRestConfigurerAdapter {
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
config.exposeIdsFor(Role.class);
}
}
虽然我期待其他类型的解决方案