Hibernate joining two table and fetch all records?

后端 未结 4 2086
离开以前
离开以前 2021-01-02 20:51

I have two entity class Category and Events.I need to join both the tables and fetch all records which matching the given condition

4条回答
  •  悲&欢浪女
    2021-01-02 21:44

    You need to think in terms of Java objects when using ORM tools.

    From your question I think the query that you're trying to write will look something like:

    public List getCategoryList(int id) {
        List groupList;
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createQuery("select c from Category c join fetch c.events where c.parentCategory.categoryId = 1");
        //query.setParameter("id", id);
        groupList = query.list();
        return groupList;
    }
    

    One of the benefits of using an ORM is that it works out the full join query for you.

    For this to work you need to update your class model as follows:

    import java.io.Serializable;
    import java.util.Date;
    import javax.persistence.*;
    
    @Entity
    @Table(name = "events")
    public class Event 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;
    
        @ManyToOne
        @JoinColumn(name = "category_i")
        private Category category;
    
        @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;
    
        ...
    
    }
    

    and

    import java.io.Serializable;
    import java.util.Date;
    import javax.persistence.*;
    
    @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;
    
        @ManyToOne
        @JoinColumn(name="parent_category_id")
        private Category parentCategory;
    
        @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;
    
        @OneToMany(mappedBy="category")
        private List events;
    
        ...
    
    }
    

提交回复
热议问题