I\'m using SpringBoot and JPA to build a REST interface.
Now, I have a strange JSON returned for the list of products fetched from the database. Let\'s say that I h
You're not doing anything wrong (at least at the code level it's rather conceptual) - json serializer just goes like this:
You must use a view or just skip it.
Use @JsonView
Use a view as a POJO
Return new ProductView
that has all fields of product and a reference (category) to new CategoryView
(you can end at this point) that has collection of (products) new ProductViewWithoutReferences
, and so on
Use @JsonIgnore
on a collection of products
And as a side note - if it's a @RestController
and you're invoking "all-products" then it's a bit unusual to return something else than a list. Wrapping the response in a map is redundant. Many rest clients expect a list when they invoke list()
method.
Adding @JsonIgnore worked for me
@OneToMany(mappedBy = "policy")
@JsonIgnore
private List<Payment> payments;
@JeanValjean your are the best
I know it's a bit late, but adding it here in case anybody faces the same problem. Here is another relevant answer I could find which discuss about similar topic
https://stackoverflow.com/a/3359884/6785908
quoting it here
Jackson 1.6 has annotation-based support for handling such parent/child linkage, see http://wiki.fasterxml.com/JacksonFeatureBiDirReferences.
You can of course already exclude serialization of parent link already using most JSON processing packages (jackson, gson and flex-json at least support it), but the real trick is in how to deserialize it back (re-create parent link), not just handle serialization side. Although sounds like for now just exclusion might work for you.
EDIT (April 2012): Jackson 2.0 now supports true identity references, so you can solve it this way also.