Could be solved if the following issue was solved: https://hibernate.onjira.com/browse/HHH-16 (Explicit joins on unrelated classes)
But this issue has been there for a very long time ... And even with that it would consider that non-matching items (objects without average votes) would return null value for average vote, so I'm not sure sorting would treat these correctly. Jeremie 2012/6/25 Eduard Moraru <enygma2...@gmail.com>: > As far as I can tell, you can only do joins in HQL *if* you have set up > object mappings (one-to-one, one-to-many, etc.). However, as far as I can > see in our Hibernate mapping, XWiki does not do these mappings and only > does basic property-to-primitiveType-to-table-column mappings. > > This is also the cause for the very verbose HQL queries that we have to do: > "... BaseObject obj, StringProperty prop where and prop.id.id=obj.id and > prop.name='age'... etc." instead of "select someObject.someProperty" but > this is also because XWiki objects don`t have individual backing java > classes and that xwiki 'classes' are created at runtime, using a single > generic backing java class (BaseObject). > > Thanks, > Eduard > > On Sun, Jun 24, 2012 at 9:23 AM, ludo...@xwiki.com <ludo...@xwiki.com>wrote: > >> I had the exact same objective a long time ago and could not find a >> solution. I think we thought about creating the missing objects. >> >> I don't think coalesce would have worked. The main issue is get the lines >> >> Ludovic >> >> Envoyé de mon iPad >> >> Le 23 juin 2012 à 21:50, Jeremie BOUSQUET <jeremie.bousq...@gmail.com> a >> écrit : >> >> > Hi Eduard, >> > >> > Well, that's what I expected but I did not succeed to find a solution >> > with a unique query, wether in XWQL or HQL. >> > >> > The solution would be to do a left join, but I could not find how to >> > formulate it and I wonder if it's possible with the current mappings. >> > >> > Jeremie >> > >> > 2012/6/23 Eduard Moraru <enygma2...@gmail.com>: >> >> Hi Jeremie, >> >> >> >> If you ultimately resorted to HQL, I guess you could of used HQL all the >> >> way instead of XWQL and have only 1 query instead of XWQL+HQL, right? >> >> >> >> Thanks, >> >> Eduard >> >> >> >> On Fri, Jun 22, 2012 at 2:51 PM, Jeremie BOUSQUET < >> >> jeremie.bousq...@gmail.com> wrote: >> >> >> >>> Hi, >> >>> >> >>> For the record, the only way I found to achieve my need was to execute >> >>> 2 requests. >> >>> (the idea was to get list of pages ordered by ratings, then date). >> >>> >> >>> First XWQL selects rated pages ordered by ratings then date: >> >>> #set($xwql = "select doc.fullName, ratings.averagevote from Document >> doc, >> >>> doc.object(XWiki.AverageRatingsClass) as ratings order by >> >>> ratings.averagevote desc, doc.date desc") >> >>> >> >>> Second HQL (XWQL seems not to recognize EXISTS keyword) selects >> >>> remaining pages (without ratings) ordered by date: >> >>> #set($hql = "select doc.fullName, 0 from XWikiDocument doc where not >> >>> exists(select obj.name from BaseObject as obj where >> >>> obj.name=doc.fullName and obj.className='XWiki.AverageRatingsClass') >> >>> order by doc.date desc") >> >>> >> >>> The concatenation of results of both requests provide the wanted >> result. >> >>> I could not find a solution using a unique request, though, making >> >>> difficult (impossible?) to integrate sort by ratings in a livetable, >> >>> for example. >> >>> >> >>> BR, >> >>> Jeremie >> >>> >> >>> 2012/4/27 jerem <jeremie.bousq...@gmail.com>: >> >>>> Hello community, >> >>>> >> >>>> I'm stuck on a problem to query average ratings data from pages - I >> >>>> installed the Ratings plugin, of course. >> >>>> >> >>>> The following query works as expected, and shows the pages having >> average >> >>>> votes, ordered by ratings then date : >> >>>> >> >>>> #set($xwql = "select doc.fullName, ratings.averagevote from Document >> doc, >> >>>> doc.object(XWiki.AverageRatingsClass) as ratings order by >> >>>> ratings.averagevote desc, doc.date desc") >> >>>> >> >>>> Of course, it will return only those pages for wich >> >>>> XWiki.AverageRatingsClass exists. >> >>>> >> >>>> Of course, what I would like, is this query to return ALL documents >> >>> ordered >> >>>> by ratings, considering no rating equals to value 0. >> >>>> >> >>>> There are two problems that make this impossible to achieve with XWQL >> (or >> >>>> I'd better say that I didn't find how) : >> >>>> - first, to get all documents I would have to perform a LEFT JOIN. I >> >>> tried >> >>>> many syntaxes but could not achieve that. Even in pure JPQL I would >> not >> >>> be >> >>>> able to perform the LEFT JOIN and specify an ON clause anyway ... >> >>>> - second, I planned to use COALESCE(ratings.averagevote, 0), to >> consider >> >>>> that no ratings equal to average 0, but this keyword is not >> recognized by >> >>>> XWQL >> >>>> >> >>>> I realize that this is more a JPQL/Database issue than XWiki issue, >> but >> >>>> ordering pages by average ratings is a very common and evident >> use-case >> >>> as >> >>>> long as you activate ratings, so I believe there must be a solution to >> >>> find >> >>>> ... And sorting things in memory is really not a very attractive >> >>> solution :( >> >>>> >> >>>> (adding a XWiki.AverageRatingsClass object to all pages would also do >> the >> >>>> trick but it seems really expensive ...) >> >>>> >> >>>> Thanks, >> >>>> Jeremie >> >>>> >> >>>> -- >> >>>> View this message in context: >> >>> http://xwiki.475771.n2.nabble.com/XWQL-and-ratings-tp7505249.html >> >>>> Sent from the XWiki- Users mailing list archive at Nabble.com. >> >>>> _______________________________________________ >> >>>> users mailing list >> >>>> users@xwiki.org >> >>>> http://lists.xwiki.org/mailman/listinfo/users >> >>> _______________________________________________ >> >>> users mailing list >> >>> users@xwiki.org >> >>> http://lists.xwiki.org/mailman/listinfo/users >> >>> >> >> _______________________________________________ >> >> users mailing list >> >> users@xwiki.org >> >> http://lists.xwiki.org/mailman/listinfo/users >> > _______________________________________________ >> > users mailing list >> > users@xwiki.org >> > http://lists.xwiki.org/mailman/listinfo/users >> _______________________________________________ >> users mailing list >> users@xwiki.org >> http://lists.xwiki.org/mailman/listinfo/users >> > _______________________________________________ > users mailing list > users@xwiki.org > http://lists.xwiki.org/mailman/listinfo/users _______________________________________________ users mailing list users@xwiki.org http://lists.xwiki.org/mailman/listinfo/users