使用休眠条件左连接

新手上路,请多包涵

我有两个实体: IssueIssue_Tracker 。我正在使用 Hibernate 3.6。

 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 Criteria 实现这一点,最重要的是,我必须将它用于分页。

My Dao 如下所示,以显示 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;
  } }

有关简要说明,请参阅此问题 如何使用 struts2 在 jqgrid 中显示两个表数据 - jqgrid 插件和 hibernate 任何帮助都会很棒。

原文由 arvin_codeHunk 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 585
2 个回答

你可以尝试以下

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 中的属性。

原文由 Anantha Sharma 发布,翻译遵循 CC BY-SA 4.0 许可协议

出色地,

跟随一个样本…

 Criteria crit = session.createCriteria(Issues.class);
crit.createAlias("otherClass", "otherClass");
crit.add(Restrictions.eq("otherClass.status", "Escalate To"));
List result = crit.list();

我认为这可以提供帮助!

原文由 Altieres de Matos 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题