java - Hibernate joining two table and producing json response in spring restful webservice? -


i have 2 table

category

enter image description here

events

enter image description here

in table category first 5 category_name main category.according 5 have fetch result.for example if user giving 1 input first need sort category_id have parent_category_id 1 in category table.in example category_id 6,7,8,9,10 because have parent_category_id 1.

next , see in events table have field name category_id. have result category category_id ie , category_id 6,7,8,9,10.

i have fetch records events table category_id matching result got category table.

confusion ?????????

see below snap shot query , result

enter image description here

this result got because in event table have records category_id 6 , 7.

my query doing job,

select * category c  inner join `events` e on e.category_id=c.category_id c.parent_category_id=1; 

the problem have integrate query hibernate , should respond spring restful web service json format follows towards client.

if user giving input parameter 1

output should json follows or in standard format that

events {      infotech[     {event_id:1,event_name:java_workshop},{event_id:2,event_name:java_workshop},......             ],     socia[     {event_id:1,event_name:java_workshop},{event_id:2,event_name:java_workshop},...             ],......     }  

i done simple json conversions in spring adding json library spring restful web service.

now , hold json conversion , please me fetch records mentioned ?

and far codes

events entity class hibernate mapping

import java.io.serializable; import java.util.date; import javax.persistence.*;  /**  * persistent class user database table.  *  */ @entity @table(name = "events") public class events implements serializable {      private static final long serialversionuid = 1l;      @id     @generatedvalue(strategy = generationtype.identity)     @column(name = "event_id")     private int eventid;      @column(name = "event_name")     private string eventname;      @column(name = "event_description")     private string eventdescription;      @column(name = "category_id")     private integer categoryid;      @column(name = "is_trending_event")     private integer istrendingevent;      @column(name = "image_url")     private string imageurl;      private integer status;      @column(name = "created_date")     @temporal(javax.persistence.temporaltype.date)     private date createddate;      @column(name = "last_updated_date")     @temporal(javax.persistence.temporaltype.date)     private date lastupdateddate;      public date getcreateddate() {         return createddate;     }      public void setcreateddate(date createddate) {         this.createddate = createddate;     }      public date getlastupdateddate() {         return lastupdateddate;     }      public void setlastupdateddate(date lastupdateddate) {         this.lastupdateddate = lastupdateddate;     }      public int geteventid() {         return eventid;     }      public void seteventid(int eventid) {         this.eventid = eventid;     }      public string geteventname() {         return eventname;     }      public void seteventname(string eventname) {         this.eventname = eventname;     }      public string geteventdescription() {         return eventdescription;     }      public void seteventdescription(string eventdescription) {         this.eventdescription = eventdescription;     }      public integer getcategoryid() {         return categoryid;     }      public void setcategoryid(integer categoryid) {         this.categoryid = categoryid;     }      public integer getistrendingevent() {         return istrendingevent;     }      public void setistrendingevent(integer istrendingevent) {         this.istrendingevent = istrendingevent;     }      public string getimageurl() {         return imageurl;     }      public void setimageurl(string imageurl) {         this.imageurl = imageurl;     }      public integer getstatus() {         return status;     }      public void setstatus(integer status) {         this.status = status;     }  } 

category entity

import java.io.serializable; import java.util.date; import javax.persistence.*;  /**  * persistent class user database table.  *  */ @entity @table(name = "category") public class category implements serializable {      private static final long serialversionuid = 1l;      @id     @generatedvalue(strategy = generationtype.identity)     @column(name = "category_id")     private int categoryid;      @column(name = "category_name")     private string categoryname;      @column(name = "parent_category_id")     private integer parentcategoryid;      @column(name = "created_date")     @temporal(javax.persistence.temporaltype.date)     private date createddate;      @column(name = "last_updated_date")     @temporal(javax.persistence.temporaltype.date)     private date lastupdateddate;      public int getcategoryid() {         return categoryid;     }      public void setcategoryid(int categoryid) {         this.categoryid = categoryid;     }      public string getcategoryname() {         return categoryname;     }      public void setcategoryname(string categoryname) {         this.categoryname = categoryname;     }      public integer getparentcategoryid() {         return parentcategoryid;     }      public void setparentcategoryid(integer parentcategoryid) {         this.parentcategoryid = parentcategoryid;     }      public date getcreateddate() {         return createddate;     }      public void setcreateddate(date createddate) {         this.createddate = createddate;     }      public date getlastupdateddate() {         return lastupdateddate;     }      public void setlastupdateddate(date lastupdateddate) {         this.lastupdateddate = lastupdateddate;     }  } 

fetch category method

public list<object[]> getcategorylist(int id) throws sqlexception, classnotfoundexception, ioexception {         list<object[]> grouplist = null;         try {             session session = sessionfactory.getcurrentsession();             query query = session.createquery("from category c  inner join events e on e.categoryid=c.categoryid c.parentcategoryid= :id");             query.setparameter("id", id);             grouplist = query.list();         } catch (exception e) {         }         return grouplist;     } 

how should write hql query ? , send result client in standard json format using spring restful web service ? me friends.

  1. dealing hql directly not nice. might wanna jooq or querydsl creating type-safe queries.
  2. for json conversion, example this answer here or create wrapping class, maps category entities associated events , use 1 of many tutorials out there, this.

Comments