[Building Sakai] generic DAO question
Jim Eng
jimeng at umich.edu
Fri Feb 19 05:51:13 PST 2010
Thanks, Aaron. Hope you're feeling better. I realized later that the
Search object coming from EB has a lot of other properties (like
"sakai.session") that should not be passed on.
You're right about the HQL. I meant to say that was just pseudo code
for the type of queries. I ended up writing some real HQL later.
Jim
On Feb 19, 2010, at 6:32 AM, Aaron Zeckoski wrote:
> The genericdao stuff only handles the 80% use cases so it will not
> return fields only. It returns the entire objects. If you are dealing
> with smaller sets I would just get all the objects back and pull the
> fields out into a set which will get you unique results. If you are
> concerned about performance over very large sets (10000+ objects) then
> it will be more efficient to write a method to pull the data via HQL
> like you are doing and place this method in the DAO.
>
> You will need the object to be capitalized correctly though:
> EvalmonitorItem should be EvalMonitorItem. You need to use the
> distinct keyword if you want to eliminate duplicate results.
> Also I normally only write a single = in HQL. It may work with == but
> that's not documented.
> One last thing, dates are normally easiest to deal with in HQL by
> using a date object and referring to it using an hql variable. I have
> had a lot of trouble with trying to represent the date as a string in
> the query.
> http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html
>
> -AZ
>
>
> On Thu, Feb 18, 2010 at 8:55 PM, Jim Eng <jimeng at umich.edu> wrote:
>> Hi Aaron,
>>
>> I have an object of type
>> org.sakaiproject.genericdao.api.search.Search that
>> expresses a set of Restrictions. I would like to do a query that
>> gets the
>> set of values for a particular property from the set of things
>> selected by
>> this Search. It looks to me like I may need to implement a special
>> method
>> in my project's DAO that would turn the Search object into part of
>> an HQL
>> statement to select the unique values for the property where the
>> Restrictions of the search are honored. Does that sound right? Or
>> is there
>> some way to use the search object directly?
>>
>> To give you an idea of what I'm looking at, I think the HQL might
>> look
>> something like this:
>>
>> select item.importOrderId from EvalmonitorItem item where
>> item.createdDate <
>> 'yyyy-mm-dd' and item.entityType == 'EvalTemplate' group by
>> item.importOrderId
>>
>> where the Search object has two Restrictions (one for "createdDate"
>> and one
>> for "entityType"). But I don't know whether this is correct HQL
>> and whether
>> it eliminates duplicate values (as I'd like).
>>
>> Any suggestions?
>>
>> Thanks.
>>
>> Jim
>>
>
>
>
> --
> Aaron Zeckoski (azeckoski (at) vt.edu)
> Senior Research Engineer - CARET - University of Cambridge
> https://twitter.com/azeckoski - http://www.linkedin.com/in/azeckoski
> http://aaronz-sakai.blogspot.com/ - http://tinyurl.com/azprofile
>
>
More information about the sakai-dev
mailing list