java - Serialize bi-directional JPA entities to JSON with jackson -
i'm using jackson serialize jpa model json.
i have following classes:
import com.fasterxml.jackson.annotation.*; import javax.persistence.*; import java.util.set; @jsoninclude(jsoninclude.include.non_null) @jsonignoreproperties(ignoreunknown = true) @jsonidentityinfo(generator = objectidgenerators.propertygenerator.class) @entity public class parent { @id @generatedvalue(strategy = generationtype.identity) private long id; private string name; @jsonmanagedreference @onetomany(mappedby = "parent", cascade = cascadetype.all, fetch = fetchtype.eager) private set<child> children; //getters , setters }
and
import com.fasterxml.jackson.annotation.*; import javax.persistence.*; import java.util.hashset; import java.util.set; @jsoninclude(jsoninclude.include.non_null) @jsonignoreproperties(ignoreunknown = true) @jsonidentityinfo(generator = objectidgenerators.intsequencegenerator.class) @entity public class child { @id @generatedvalue(strategy = generationtype.identity) private long id; private string name; @jsonbackreference @manytoone @joincolumn(name = "parentid") private parent parent; //getters , setters }
i'm using pojo mapping serialize model json. when serialize parent object following json:
{ "id": 1, "name": "john doe", "children": [ { "id": 1, "name": "child1" },{ "id": 2, "name": "child2" } ] }
but when serialize child following json:
{ "id": 1, "name": "child1" }
the reference parent missing. there way solve this?
i think have chose between @jsonidentityinfo , @jsonbackreference/@jsonmanagedreference.
i go : @jsonidentityinfo(generator = objectidgenerators.propertygenerator.class, property="id") on entities, removes @jsonbackreference/@jsonmanagedreference pairs.
and add @jsonignore on fields want exclude.
Comments
Post a Comment