使用hibernate标准进行左连接

arv*_*unk 8 java mysql hibernate hibernate-criteria

我有两个实体: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"
Run Code Online (Sandbox Code Playgroud)

如何使用Hibernate Criteria实现这一点,最重要的是,我必须将它用于分页.

和My Dao如下显示jqgrid中的问题列表

public List 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;
  } }
Run Code Online (Sandbox Code Playgroud)

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

Ana*_*rma 7

你可以试试以下

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();
Run Code Online (Sandbox Code Playgroud)

这里parent是属性名称in Issues.java,child是属性IssueTracker.java.


Alt*_*tos 7

好,

按照一个样本...

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

我想是的,这可以帮助!!