Re: Problem traversing relationships - need hint

From: Arturo Perez (apere..ayesinc.com)
Date: Mon Jun 19 2006 - 12:32:01 EDT

  • Next message: Craig L Russell: "Re: modifying relationship list"

    Andrus Adamchik <andrus <at> objectstyle.org> writes:

    >
    >
    > On Jun 19, 2006, at 5:13 PM, Arturo Perez wrote:
    >
    > > Iterator i = articleCategory.getArticles().iterator();
    > > while (i.hasNext()) {
    > > ArticleCategoryLink acl = (ArticleCategoryLink)i.next();
    > > ArticleMeta am = acl.getLatestArticle();
    > > Article a = am.getArticle();
    > > }
    > >
    > > The article is null but if I run an Expression I get what I expect:
    > >
    > > Expression exp =
    > > ExpressionFactory.matchExp("activeArticle.categories.category",
    > > category);
    > > exp = exp.andExp(
    > > Expression.fromString("latestArticle.article
    > > activeArticle.article"));
    >
    > The last expression looks strange (I am surprised it compiles). What
    > SQL is generated for the query?
    >
    > Andrus
    >
    >

    It looks like the equal sign went away. It should be
               "latestArticle.article = activeArticle.article"

    That last expression is intended to limit results to the current articles.
    Everything has backissues that should be ignored for the above. The SQL
    is a 4-way join:

    2006-06-19 12:25:21,249 [http-8316-Processor24] WARN
    org.objectstyle.cayenne.access.QueryLogger- SELECT DISTINCT t0.ARTICLE_ID,
     t0.ARTICLE_META_ID FROM ARTICLE t0, ARTICLE_META t1,
    ARTICLE_CATEGORY_LINK t2, ARTICLE_META t3 WHERE t0.ARTICLE_ID =
     t1.ACTIVE_ARTICLE_ID AND t1.ARTICLE_META_ID = t2.ARTICLE_META_ID AND
     t0.ARTICLE_META_ID = t3.ARTICLE_META_ID AND ((t2.CATEGORY_ID = ?) AND
     (t1.ACTIVE_ARTICLE_ID = t1.ACTIVE_ARTICLE_ID)) [bind: 1042]
    2006-06-19 12:25:23,608 [http-8316-Processor24] WARN
      org.objectstyle.cayenne.access.QueryLogger- === returned 91 rows. - took
     2359 ms.

    I suppose I should change the above to a matchInExp to cut down on the join
    but I'm more concerned about the null. Although, looking at that SQL, the
    last AND clause seems incorrect.

    -arturo



    This archive was generated by hypermail 2.0.0 : Mon Jun 19 2006 - 12:33:46 EDT