我有两个实体:Issue和Issue_Tracker。我正在使用Hibernate 3.6。
Issue
Issue_Tracker
SELECT `issues`.`issue_id`, `issues`.`issue_raised_date`, `issues`.`issue_description`, `issue_tracker`.`tracker_status` FROM `issues` LEFT JOIN `issue_tracker` ON `issues`.`issue_id` = `issue_tracker`.`issue_id` WHERE `issues`.`status`="Escalate To"
如何使用hibernate标准实现这一目标,最重要的是,我必须将其用于分页。
而“我的道”如下所示以显示jqgrid中的“问题”列表
公共列表showHelpDeskIssues(DetachedCriteria dc,int from,int size){ Session session = HibernateUtil.getSessionFactory().getCurrentSession(); try { Criteria criteria = dc.getExecutableCriteria(session); criteria.setFirstResult(from); criteria.setMaxResults(size); criteria.add(Restrictions.eq("status","Escalate To")); return criteria.list(); } catch (HibernateException e) { e.printStackTrace(); throw e; } }
公共列表showHelpDeskIssues(DetachedCriteria dc,int from,int size){
Session session = HibernateUtil.getSessionFactory().getCurrentSession(); try { Criteria criteria = dc.getExecutableCriteria(session); criteria.setFirstResult(from); criteria.setMaxResults(size); criteria.add(Restrictions.eq("status","Escalate To")); return criteria.list(); } catch (HibernateException e) { e.printStackTrace(); throw e; } }
您可以尝试以下
Criteria criteria = session.createCriteria(Issues.class); criteria.setFirstResult(from); criteria.setMaxResults(size); criteria.setFetchMode('parent.child', FetchMode.JOIN); criteria.add(Restrictions.eq("status", "Escalate To"); List<Issues> list= criteria.list();
这里parent是中的属性名称Issues.java,child是中的属性IssueTracker.java。
Issues.java
IssueTracker.java