【问题标题】:Hibernate joining two table and producing json response in spring restful webservice?Hibernate 加入两个表并在 Spring RESTful Web 服务中生成 json 响应?
【发布时间】:2015-10-07 05:02:09
【问题描述】:

我有两张桌子

类别

活动

表中Category前五个category_name是主要的 category.according 这五个我必须获取 result.for 例如,如果用户首先给出1 作为输入,我需要对category_id 进行排序 谁在Category table中有parent_category_id 1。在这个例子中我会 获取category_id 6,7,8,9,10,因为他们有parent_category_id 1

接下来,请参阅Events table,我也有一个带有名称的字段 category_id。我有来自Categorycategory_id 的结果,即 , category_id 6,7,8,9,10.

我必须从Events tablecategory_id 获取所有记录 与我们从Category table 得到的结果相匹配。

混乱?????????

请看下面我的查询和结果快照

我得到这个结果是因为在我的Event table 中只有与 category_id 6 and 7.

我的查询正在做他的工作,

SELECT * FROM category c  inner join `events` e on e.category_id=c.category_id where c.parent_category_id=1;

问题是我必须将查询与hibernate 集成,并且应该 用json 格式回复我的spring restful web service 面向客户。

如果用户输入参数为1

输出应遵循 json 格式或类似的任何标准格式

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},...
            ],......
    } 

我在春天通过添加 json 库完成了简单的 json 转换 spring restful web 服务。

现在,请保持 json 转换,请帮助我获取 我提到的记录?

到目前为止我的代码

用于休眠映射的事件实体类

import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;

/**
 * The persistent class for the 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;
    }

}

类别实体

import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;

/**
 * The persistent class for the 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;
    }

}

获取类别方法

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 where c.parentCategoryId= :id");
            query.setParameter("id", id);
            groupList = query.list();
        } catch (Exception e) {
        }
        return groupList;
    }

我应该如何编写 HQL 查询?并将结果发送回客户端 使用 spring restful web 服务的标准 json 格式?帮帮我吧朋友。

【问题讨论】:

  • 现在,只需保持 json 转换,请帮我获取我提到的记录吗?:你能把你的问题简化为核心,让它变得可以回答吗?跨度>
  • 事实上,我必须先解决这两个问题,即 json 转换和 HQL .. 如果您知道其中任何一个,请帮助我..

标签: java mysql json spring hibernate


【解决方案1】:
  1. 直接处理 HQL 不是很好。您可能想查看 jOOQQuerydsl 以帮助您创建类型安全的查询。
  2. 对于您的 JSON 转换,例如,您可以查看 this answer here 或创建一个包装类,将您的类别实体与关联的事件映射并使用其中的许多教程,例如 this

【讨论】:

    猜你喜欢
    • 2016-10-21
    • 1970-01-01
    • 2013-11-28
    • 2016-05-25
    • 1970-01-01
    • 2012-11-15
    • 2016-03-24
    • 2018-01-14
    • 2015-10-23
    相关资源
    最近更新 更多