开发者

Customizing Hibernate Criteria - Adding conditions to a left join

开发者 https://www.devze.com 2022-12-30 11:14 出处:网络
I need to be able to do the following: Select * from Table1 left join Table2 on id1 = id2 AND i1 = ? Hibernate criteria doesn\'t allow be to specify the i1 = ? part.

I need to be able to do the following:

Select * from Table1 left join Table2 on id1 = id2 AND i1 = ?

Hibernate criteria doesn't allow be to specify the i1 = ? part.

The existing code is using hibernate criteria and it would be a开发者_StackOverflow社区 huge refactor to swap out for HQL

Does anybody have any tips how I could implement this differently or any way to override the Hibernate Criteria? I'm not opposed to cracking open hibernate and modifying, but when I began to dig it, there seems to be layers upon layers of abstractions. I never found the the point where SQL is actually generated...


This appears to be what I need...

http://opensource.atlassian.com/projects/hibernate/browse/HHH-2308

i.e.

public Criteria createAlias(String associationPath, String alias, int joinType, Criterion withClause) throws HibernateException;

public Criteria createCriteria(String associationPath, String alias, int joinType, Criterion withClause) throws HibernateException;


You can use a Fetch mode to Join. You can do it by doing this:

Criteria criteria = session.createCriteria(Table1.class);
criteria.setFetchMode(table2OutputList, FetchMode, JOIN);
criteria.add(Restrictions.eq("i1", i1Value);
return criteria.list();

In this case, you will have to fetch the table2OutputList before running this query. This article can give you a better idea;

0

精彩评论

暂无评论...
验证码 换一张
取 消