[hibernate-issues] [Hibernate-JIRA] Updated: (HHH-2893) Criteria api does not allow a groupProperty to _NOT_ be included in the selected columns

Antony Stubbs (JIRA) noreply at atlassian.com
Wed Oct 17 08:13:39 EDT 2007


     [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-2893?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Antony Stubbs updated HHH-2893:
-------------------------------

    Attachment: hibernate criterion patch.patch

Woah. Not at all as easy as I thought. 
Quite an interesting look into the guts of Hibernate this time though.

This is a rough cut first attempt at a fix. It works for me for a query that looks like this:
[code]
	    Criteria c2 = s.createCriteria(TankerLog.class);
	    c2.setProjection( Projections.projectionList()
	        .add( Projections.max("id.sampleTimestamp") )
	        .add( Projections.groupProperty("t.tankerRefId",true) )
	        .add( Projections.groupProperty("id.variableId",true) )
	        );
	    c2.createAlias("tankerHeader", "h");	    
	    c2.createAlias("tankerHeader.tanker", "t");
	    c2.add(Restrictions.in("t.tankerRefId", tankerRefIds));
	    c2.add(Restrictions.in("id.variableId", varIds));
[/code]

those 'true' statements indicate that it's a groupProperty which should not be included in the select.

Tomorrow when I get time, I will try running the unit tests. Haven't figured out how they work yet.

Until then!

> Criteria api does not allow a groupProperty to _NOT_ be included in the selected columns
> ----------------------------------------------------------------------------------------
>
>                 Key: HHH-2893
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2893
>             Project: Hibernate3
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 3.2.5
>         Environment: n/a
>            Reporter: Antony Stubbs
>         Attachments: hibernate criterion patch.patch
>
>   Original Estimate: 2 hours
>  Remaining Estimate: 2 hours
>
> When adding a Projections.groupProperty("prop") to a criteria, the property is added to both the GROUP BY and SELECT parts of the generated SQL query. This is a major problem for using the criteria API for complex subselects that require aggregating by a column while grouping by another column.
> There is presently no way in the criteria API to group by a column and have it _ONLY_ in the GROUP BY clause.
> i.e.
> currently Projections.groupProperty("propOne") causes:
> SELECT propOne, MAX(propTwo) FROM table GROUP BY prop
> desired option is to have
> SELECT MAX(propTwo) FROM table GROUP BY prop
> There have been several people talking about this, but there appears to have been 'no comment'.
> http://forum.hibernate.org/viewtopic.php?t=939071&highlight=values+groupproperty
> http://forum.hibernate.org/viewtopic.php?t=950803&highlight=groupproperty+subquery
> http://forum.hibernate.org/viewtopic.php?t=964512&highlight=groupproperty+subquery
> http://forum.hibernate.org/viewtopic.php?t=957671&highlight=groupproperty+subquery
> http://forum.hibernate.org/viewtopic.php?p=2317841#2317841
> http://forum.hibernate.org/viewtopic.php?t=961617&highlight=groupproperty+subquery
> Find a 1st cut patch on it's way - I'm just itching my scratch now...
> Great work on Hibernate guys!

-- 
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