This question is related to this SO question (Spring boot @ResponseBody doesn't serialize entity id). I have observed that after migrating an app to Spring Boot and usi
As of Spring Data Rest 2.4 (which is a transitive dependency if using spring-boot 1.3.0.M5) you may use the RepositoryRestConfigurerAdapter. For instance,
@Configuration
class SpringDataRestConfig {
@Bean
public RepositoryRestConfigurer repositoryRestConfigurer() {
return new RepositoryRestConfigurerAdapter() {
@Override
public void configureRepositoryRestConfiguration(
RepositoryRestConfiguration config) {
config.exposeIdsFor(Class1.class, Class2.class);
}
}
}
}
Before expose Id
please read disussion: https://github.com/spring-projects/spring-hateoas/issues/66
In REST the id of a resource is its URI. The client doesn't explicitly use the id to build an url. You could, for example, replace your id for an uuid, for example. Or even change the url scheme.
@Id annotation in your model class does the magic.
public class Location {
@Id
private String woeid;
private String locationName;
Then your mongo object will look like this:
{
"_id" : "2487889",
"_class" : "com.agilisys.weatherdashboard.Location",
"locationName" : "San Diego, CA"
}
By default Spring Data Rest does not spit out IDs. However you can selectively enable it through exposeIdsFor(..) method. You could do this in configuration, something like this
@Configuration
public static class RepositoryConfig extends
RepositoryRestMvcConfiguration {
@Override
protected void configureRepositoryRestConfiguration(
RepositoryRestConfiguration config) {
config.exposeIdsFor(Class1.class, Class2.class);
}
}
put @getter, @setters and it will be exposed to json results, hope it would help you