Thanks Nicklas, that magic worked perfectly.
Interesting point about the variable number of steps from hyb to sample (if
doing pooling) - this will cause some headaches but I think we have to ignore
it and move on for the moment. Fortunately we are still in a BASE1 mindset
with regards to biomaterials!
Nicklas Nordborg writes:
> Hmmm... I was a bit puzzled at first... The query seemed to be a valid
> query. However, I found that the problem is that the
> "creationEvent.sources" is a Map collection where the LabeledExtract is
> the key and the used quantity is the value part. Unfortunately it seems
> like the expression "creationEvent.sources" only goes to the value part
> (used quantity). That is why Hibernate complains with the error
> "could not resolve property: name of: component[usedQuantity,dummy]"
>
> Hibernate has an index() function which can be used to get to the key
> part of the map (WHERE index(lbe) ...) but it seems like it only
> retrieves the ID of the LabeledExtract and not the name and other
> properties.
>
> Now, all this can solved with a subquery magic using a custom-built
> restriction. Replace the itemQuery.restrict() call with something like this:
>
> itemQuery.restrict(
> new Restriction()
> {
> public String toQl(Query query, DbControl dc)
> {
> return "index(lbe) IN " +
> "(SELECT l.id FROM LabeledExtractData l " +
> " WHERE l.name = 'uci_tissues_fb_3.s1.e1.lbe1')";
> }
>
> public Collection<? extends QueryElement> getChildren()
> {
> return null;
> }
> });
>
> Of course, this needs to be polished up a bit to be used for real. If
> you need to go up to samples you must do that in the subquery, but that
> is easier:
>
> WHERE l.parent.parent.name = ...
>
> This assumes that you always use non-pooled items. If you have pooled
> items nothing will work, since the number of hops to get to the sample
> may be different for different paths. In that case you'll probably have
> to start at the sample level and then follow each path down to the
> hybridizations.
>
> /Nicklas
>
> Bob MacCallum wrote:
> > Hi,
> >
> > The following isn't working, even though some very similar code in
> > net.sf.basedb.core.LabeledExtract works fine (I assume). I'm just
> > restricting
> > on a hard-coded "name" at the moment for testing:
> >
> > ItemQuery<net.sf.basedb.core.Hybridization> itemQuery =
> > Hybridization.getQuery();
> > itemQuery.include(Include.SHARED);
> > itemQuery.setDistinct(true);
> > itemQuery.join(Hql.innerJoin("creationEvent.sources",
> > Item.LABELEDEXTRACT.getAlias()));
> > itemQuery.restrict(
> > Restrictions.eq(
> > Hql.property(Item.LABELEDEXTRACT.getAlias(), "name"),
> > Expressions.string("uci_tissues_fb_3.s1.e1.lbe1")
> > )
> > );
> > ... = itemQuery.list(dc);
> >
> >
> > [java] Exception in thread "main" net.sf.basedb.core.BaseException:
> > could not resolve property: name of: component[usedQuantity,dummy] [SELECT
> > DISTINCT hyb FROM net.sf.basedb.core.data.HybridizationData hyb INNER JOIN
> > hyb.creationEvent.sources lbe WHERE (lbe.name =
> > :P1555286c83a454f1a9e048f5efbcde73)]
> > [java] at
> > net.sf.basedb.core.HibernateUtil.createQuery(HibernateUtil.java:1349)
> > [java] at
> > net.sf.basedb.core.AbstractEntityQuery.getMainHqlQuery(AbstractEntityQuery.java:349)
> > [java] at net.sf.basedb.core.ItemQuery.list(ItemQuery.java:93)
> >
> >
> > If I print out the query it looks like this
> >
> > [java] ItemQuery: SELECT DISTINCT hyb.null FROM
> > net.sf.basedb.core.data.HybridizationData hyb INNER JOIN
> > creationEvent.sources lbe WHERE (lbe.name =
> > :P1555286c83a454f1a9e048f5efbcde73(uci_tissues_fb_3.s1.e1.lbe1))
> >
> >
> > Once we get this working, we want to join all the way to Sample - do you
> > think
> > that will be possible?
> >
> > many thanks,
> >
> > Bob.
> >
> >
>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Splunk Inc.
> Still grepping through log files to find problems? Stop.
> Now Search log events and configuration files using AJAX and a browser.
> Download your FREE copy of Splunk now >> http://get.splunk.com/
> _______________________________________________
> basedb-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/basedb-devel
--
Bob MacCallum | VectorBase Developer | Kafatos/Christophides Groups |
Division of Cell and Molecular Biology | Imperial College London |
Phone +442075941945 | Email [EMAIL PROTECTED]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
basedb-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/basedb-devel