web-dev-qa-db-ja.com

Hibernate基準を使用した左結合

IssueIssue_Trackerの2つのエンティティがあります。 Hibernate3.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を使用してこれを実現する方法、そして最も重要なのは、ページ付けに使用する必要があることです。

そして私の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で2つのテーブルデータを表示する方法-jqgridプラグインとhibernate どんな助けでも素晴らしいでしょう。

8
arvin_codeHunk

あなたは以下を試すことができます

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();

ここで、親はIssues.Javaのプロパティ名であり、子はIssueTracker.Javaのプロパティです。

7
Anantha Sharma

上手、

1つのサンプルに従ってください...

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

これが役立つと思います!!

7

これは私のために働いたのでこれを試してみてください

Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Issues.class, "issues");
criteria.setFetchMode("issues.issuetracker", FetchMode.JOIN);
criteria.createAlias("issues.issuetracker", "issuetracker");
criteria.add(Restrictions.eq("status","Escalate To"));
List list = criteria.list();
return list;
1
hyzic23