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