[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-2308) Adding predicates to the join condition using Criteria Query
Chris Wilson (JIRA)
noreply at atlassian.com
Tue Feb 16 09:39:48 EST 2010
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-2308?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=35584#action_35584 ]
Chris Wilson commented on HHH-2308:
-----------------------------------
If you need this support in a stable release (3.3.2GA) you can use [our RitaCriteriaQuery class|http://rita.wfplogistics.org/trac/browser/rita/src/org/wfp/rita/db/RitaCriteriaQuery.java]:
{code}
Criteria rl = session.createCriteria(RequestLine.class);
RitaCriteriaQuery rcq = new RitaCriteriaQuery(rl, m_Facade);
...
Criteria mo = session.createCriteria(rl, "movementsIn",
"mo", JoinFragment.INNER_JOIN);
rcq.setJoinRestriction(mo, Restrictions.eq("ownerCode",
Movement.OwnerCode.O));
...
List<RequestLine.Id> ids = rcq.list();
{code}
You'll probably want to change the RitaCriteriaQuery constructor to take a Session and a SessionFactory instead of a DataFacade (which is our Session wrapper).
See [our RequestDao class|http://rita.wfplogistics.org/trac/browser/rita/src/org/wfp/rita/datafacade/RequestDao.java] for more details and sample code.
> Adding predicates to the join condition using Criteria Query
> ------------------------------------------------------------
>
> Key: HHH-2308
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2308
> Project: Hibernate Core
> Issue Type: New Feature
> Components: query-criteria
> Affects Versions: 3.2.1
> Environment: Linux Using MS SQLServer
> Reporter: Ben Grant
> Assignee: Steve Ebersole
> Fix For: 3.5.0-Beta-3
>
> Attachments: hibernate-3.3.2.GA-createAlias_withClause.patch, hibernate-3.3.2.GA-createAlias_withClause.zip, hibernate-joinOn-sorted.ZIP, hibernate-joinOn.ZIP, hibernate-outer-join-criteria-trunk.diff, hibernate-outer-join-criteria.diff
>
>
> I have two tables
> Table A
> ||Col_1||Col_2||
> |London| UK |
> |Liverpool| UK |
> | New York | USA |
> Table B
> ||Col_1||Col_2|| Col_3||
> | UK | Europe | 0
> | USA | Americas | 1
> Using the Criteria class, Restriction Class and FetchMode, Hibernate manages to create a query that looks like this
> select distinct top 2000
> this_.Col_1 as y0_, TableB3_.Col2 as y1_
> from TableA this_
> left outer join TableB TableB3_ on this_.Col_2= TableB3_.Col_1
> where TableB3_.Col_3=1
> When really i need the query to be like this
> select distinct top 2000
> this_.Col_1 as y0_, TableB3_.Col2 as y1_
> from TableA this_
> left outer join TableB TableB3_ on this_.Col_2= TableB3_.Col_1 AND TableB3_.Col_3=1
> currently their isn't any know way for hibernate to adjust or apply filters within the join clause.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list