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(a)gmail.com>
To: "XWiki Developers" <devs(a)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(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs