使用ORM工具时,您需要考虑Java对象。
根据您的问题,我认为您要编写的查询看起来像:
public List<Category> getCategoryList(int id) { List<Category> 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;}使用ORM的好处之一是它为您解决了完全联接查询。
为此,您需要按如下所示更新类模型:
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; ...}和
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<Event> events; ...}


