[xwiki-devs] [gsoc] Re: Problems creating a query using the QueryManager
Markus Lanthaler
mark_lanthaler at gmx.net
Wed Jul 30 11:33:05 CEST 2008
Hi Artem,
Now it works! Another SVN update this morning fixed it. Thank you very much
for your help!
----- Original Message -----
From: "Artem Melentyev" <amelentev at gmail.com>
To: "XWiki Developers" <devs at xwiki.org>
Sent: Tuesday, July 29, 2008 9:46 PM
Subject: [gsoc] Re: [xwiki-devs] Problems creating a query using the
QueryManager
> Hi, Markus.
>
> I tired it and it work fine for me.
>
> I created XWiki.OpenIdIdentifier class with StringProperty field. Added
> it to XWiki.Admin user page (identifier='someurl') and used this groovy
> script inside xwiki page for test:
> <%
> println xwiki.xWiki.store.queryManager.createQuery("select doc.fullName"
> +" from XWikiDocument as doc, BaseObject as obj, StringProperty as prop"
> +" where doc.fullName = obj.name and obj.className =
> 'XWiki.OpenIdIdentifier' "
> +" and obj.id=prop.id.id and prop.id.name='identifier' and prop.value =
> :identifier", "hql").bindValue("identifier", "someurl").execute()
> %>
> named query also works for me.
>
> I recently commit some fix for hibernate queries. Maybe it will fix your
> problem. Please svn up and try again.
>
> Try also old XWikiStoreInterface#search* methods if QueryManager will
> not work.
>
> Markus Lanthaler wrote:
>> Sorry for the late answer but I had problems with my installation after
>> the
>> SVN update.
>> Now I don't get any exception anymore - but also no result. I tried both,
>> creating a named query by adding the following code to queries.hbm.xml
>> and
>> creating the query directly.
>>
>> <query name="getUserDocByOpenIdIdentifier">
>> select doc.fullName from XWikiDocument as doc, BaseObject as obj,
>> StringProperty as prop where doc.fullName=obj.name and
>> obj.className='XWiki.OpenIdIdentifier' and obj.id=prop.id.id and
>> prop.id.name='identifier' and prop.value=:identifier
>> </query>
>>
>> This sets the statement member in the returned query
>> qm.getNamedQuery("getUserDocByOpenIdIdentifier") to
>> "getUserDocByOpenIdIdentifier". Is that right!?
>>
>> I tried also to create the query directly (also including "select
>> doc.fullName"):
>>
>> Query search_user2 = qm.getNamedQuery("getUserDocByOpenIdIdentifier");
>> search_user2 = qm.createQuery("from XWikiDocument as doc, BaseObject as
>> obj,
>> StringProperty as prop where doc.fullName = obj.name and obj.className =
>> 'XWiki.OpenIdIdentifier' and obj.id=prop.id.id and
>> prop.id.name='identifier'
>> and prop.value = :identifier", Query.HQL);
>>
>> search_user2.bindValue("identifier", openid_identifier);
>>
>> List<XWikiDocument> found_users2 = search_user2.setLimit(1).execute();
>> if (found_users2.size() > 0) {
>> return found_users2.get(0).getFullName();
>> }
>>
>>
>> Both queries returned empty lists.
>>
>> I checked the DB with the MySQL Query Browser and saw that there are the
>> right entries in xwikistrings, xwikiobjects and xwikidoc so they are
>> saved
>> in the right way. Are the table names converted automatically? There is
>> no
>> table XWikiDocument in my DB but just xwikidoc for instance.
>
> Hibernate automatically transform class names to its db tables.
> Look xwiki.hbm.xml for mapping.
>
>>...
>
>
> --
> Artem Melentyev
> _______________________________________________
> devs mailing list
> devs at xwiki.org
> http://lists.xwiki.org/mailman/listinfo/devs
>
More information about the devs
mailing list