3

Resolved

Orchard Hql API Not Returning Distinct Values

description

Hello,

I recently had an issue where the hql queries that I was performing through the Orchard API was not returning distinct values. I saw that the Count and Splice functions have .SetResultTransformer(new DistinctRootEntityResultTransformer()); which is suppose to return distinct results, but this was not working for me.

One thing to note is that I joined a non contentpart table in this query (not sure if this matters).

The only way I could solve this issue was by changing the first few lines of the ToHql method in DefaultHqlQuery.cs from:
            if (count) {
                sb.Append("select count(civ) ").AppendLine();
            }
            else {
                sb.Append("select civ ").AppendLine();
            }
To:
            if (count) {
                sb.Append("select count(distinct civ.Id) ").AppendLine();
            }
            else {
                sb.Append("select distinct civ.Id, civ ").AppendLine();
            }
Does anyone see any issues with this? Is there any other way to do this?

Thanks in advance.

comments

sebastienros wrote May 23, 2013 at 7:15 PM

Fixed in changeset 5cbfb9b6cd21

Skelet0r67 wrote May 24, 2013 at 12:51 AM

I can't seem to find that commit. Which branch is it under?

JasperD wrote May 24, 2013 at 3:16 AM

It's in 1.x.

Skelet0r67 wrote May 24, 2013 at 7:43 PM

I see it now, thanks.

sfmskywalker wrote Aug 7, 2013 at 6:02 AM

Fixed in changeset a094efac2d8394a4e89d3b96a56864b26f159e95