Hi Martin,
On 10/20/2010 09:10 PM, mbryant wrote:
So using HQL in velocity helps a little, I have
been able to get results, and
for that I thank you. I did run into an unexpected issues that you might be
able to help with. Below is the query that was used
{{velocity}}
#set($hql = "select obj.name, prop.value from BaseObject obj, StringProperty
prop where obj.className='CustClasses.ToolClass' and prop.id.id=obj.id and
prop.name='ProductName'")
#set($results = $xwiki.search($hql, 1000, 0))
#foreach ($item in $results)
* $item
#end
{{/velocity}}
While I get a result it is an unexpected value, it appears to have returned
the object ID see below:
* [Ljava.lang.Object;@af0baa
That's normal because $item is an array of Java objects (xobject name
and property value) and by simply printing $item you are in fact calling
its toString() method which returns the string you see.
It should be noted when I just try to get the
obj.name without the property
value it works fine.
That's normal too, because in this case $item is not an array of Java
objects but a string (xobject name).
You can use this code to display the results:
|=Object Name|=Property Value
#foreach ($item in $results)
|$item.get(0)|$item.get(1)
#end
Hope this helps,
Marius
> Now that I know the Query generally works in Velocity, It should be the same
> thing to just cut and paste the Query into the DB List attribute of an
> object.
>
> Thanks for your continued help and timely response.
>
> On a side note, I would like to be able to create links on results (when
> used inside of a velocity script on a page), is there an easy way to do that
> as well?
>
> Martin
> Modus Operandi
>
You can use the public API method $searchDocuments this way...
{{velocity}}
#set($query = ", BaseObject as obj, StringProperty as productName where
doc.fullName = obj.name and obj.className='CustClasses.ToolClass' order
by doc.fullName asc")
#set($results=$xwiki.searchDocuments($query))
#foreach($item in $results)
#set($itemdoc = $xwiki.getDocument($item))
[[$itemdoc.display('Name')>>$item]]
#end
{{/velocity}}
Look for $searchDocuments in the API JavaDoc to better understantd what
you are doing...
I, like you, I'm still trying to understand the whole stuff and to be
able to do things as "easy" as developers do! :-)
Greetings,
Ricardo
--
Ricardo RodrÃguez
CTO
eBioTIC.
Life Sciences, Data Modeling and Information Management Systems