On Tue, 2008-04-15 at 14:43 +0100, Tjaart van Wijck wrote:
#set($query="select obj from BaseObject obj where obj.className='Contacts.ContactClass'") #set($results=$xwiki.searchDocuments($query, 10, 1)) #foreach($item in $results) #set ($itemdoc = $xwiki.getDocument($item)) #set ($itemobject = $itemdoc.getObject('Contacts.ContactClass')) $itemobject.display('firstname') | $itemobject.display('lastname') | $itemobject.display('phone1') <br /> #end
But get the error:
Error number 4001 in 4: Error while parsing velocity page Contacts.Contacts Directory Wrapped Exception: Invocation of method 'searchDocuments' in class com.xpn.xwiki.api.XWiki threw exception com.xpn.xwiki.XWikiException: Error number 3223 in 3: Exception while searching documents with SQL web, doc.name from XWiki Document as doc where select obj from Base Object obj where obj.class Name='Contacts.Contact Class'? Wrapped Exception: unexpected token: select near line 1, column 85 web, doc.name from com.xpn.xwiki.doc.XWiki Document as doc where select obj from com.xpn.xwiki.objects.Base Object obj where obj.class Name='Contacts.Contact Class'? @ Contacts.Contacts Directory2,22
From the reported exception message the error seems to lay in the HQL query. When using the "unprivileged" searchDocument API method you have the beginning of the query already set up so the "select obj from BaseObject obj" happens to be inserted in the query after another select (you should start $query with the where clause), causing the reported error.
Have a look at <http://platform.xwiki.org/xwiki/bin/view/DevGuide/velocityHqlExamples#HPublicAPI28searchDocuments29> for further info. -- Marco ===== "We know nothing — that is the first point. Therefore we should be very modest — that is the second. That we should not claim to know when we do not know — that is the third." Karl R. Popper