java - How to fetch Hibernate object and map it to JSON -


i have problem. when i'm trying json object of employee can't see 1 important field (company). example, need object this:

{     "name": "jack",     "company": {         "name": "microsoft",         "id": 4     },     "id": 1 } 

but instead i'm getting object without company (wrong!):

{     "name": "bill",     "id": 2 } 

at same time want json object of company:

{     "name": "microsoft",     "employees": [         {             "name": "jack",             "id": 1         },         {             "name": "frank",             "id": 3         }     ],     "id": 4 } 

company object ok. it's perfect when i'm getting it. problem in employee object.

here entity classes

@entity @table(name = "company") public class company implements serializable {      @id     @generatedvalue(strategy = generationtype.auto)     private integer id;      @column     private string name;      @onetomany(mappedby = "company")     @cascade(value = cascadetype.all)     @jsonmanagedreference     private collection<employee> employees; 

and employee class

@entity @table(name = "employee") public class employee implements serializable {      @id     @generatedvalue(strategy = generationtype.auto)     integer id;      @column     string name;      @manytoone()     @cascade(value = org.hibernate.annotations.cascadetype.all)     @joincolumn(name = "company_id", referencedcolumnname = "id")     @jsonbackreference     private company company; 

i think probjem in @json[somecondition] annotation. can me fix code. need employee object companym this:

{     "name": "jack",     "company": {         "name": "microsoft",         "id": 4     },     "id": 1 } 

upd:

here controller:

@controller @requestmapping("/employee") public class employeecontroller {      @autowired     employeeservice employeeservice;      @requestmapping(method = {requestmethod.get}, produces = "application/json")     public @responsebody collection<employee> getemployees() {         return employeeservice.getemployees();     }      @requestmapping(value = "/{id}", method = {requestmethod.get, requestmethod.put},                     produces = "application/json")     public @responsebody employee getemployee(@pathvariable("id") integer id) {         return employeeservice.getemployee(id);     }      @requestmapping(method = requestmethod.post, consumes = "application/json",                     headers = "content-type=application/json")     public string addemployee(@requestbody employee employee) {         employeeservice.addemployee(employee);         return "redirect:/employee";     }      @requestmapping(method = requestmethod.put, consumes = "application/json",                     headers = "content-type=application/json")     public string updateemployee(@requestbody employee employee) {         employeeservice.updateemployee(employee);         return "redirect:/employee/" + employee.getid();     }      @requestmapping(value = "/{id}", method = requestmethod.delete)     public string deleteemployee(@pathvariable("id") integer id) {         employeeservice.deleteemployee(id);         return "redirect:/employee";     } } 

it problem of eager , lazy fetching in hibernate. carefull both concept. read before implements it. add fetch=fetchtype.eager when define relation in company class.

 @onetomany(mappedby = "company",fetch=fetchtype.eager)      @cascade(value = cascadetype.all)      @jsonmanagedreference     private collection<employee> employees; 

Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -