Aliases seem like a good idea. I know that when I implemented all of
this, internally I had to set up an alias table, so it's a natural
fit.
On 4/30/08, Andrus Adamchik <andru..bjectstyle.org> wrote:
> Now looking to add splits to SelectQueries, I am wondering if the approach
> we discussed before is too "special case". To reiterate, the idea of a "join
> split" (CAY-802), was to allow users to override the default behavior of
> Cayenne which is to reuse all joins. Here is some in-depth discussion of
> useful split scenarios:
>
>
> http://objectstyle.org/cayenne/lists/cayenne-devel/2003/09/0096.html
>
> I am wading through archives trying to find the pipe ("|") semantics that
> Giulio Cesare used for the splits, but IIRC it was something like this:
>
> rel1.rel2|rel3.rel4
>
> That's fine except that it is targeting a special case of matching a single
> path against a collection of values. A more generic case would be multiple
> overlapping but different expression paths. E.g.:
>
> rel1.rel2.rel3.rel4
> rel1.rel2.rel3.rel5
>
> Split semantics, while rather concise and clear for its intended use,
> doesn't help us in dealing with multiple overlapping paths... So how do we
> handle those? One possible solution is to follow EJBQL idea and define
> aliases for join paths. This way each alias for the same path generates a
> separate chain of joins that can be reused if needed. E.g.:
>
> SelectQuery query = ...
> query.addQualifierAlias("rel1.rel2", "a");
> query.addQualifierAlias("rel1.rel2", "b");
>
> Then the following can be used as qualifier:
>
> a.x
> a.rel4
> b.y
> b.rel5
>
> Any thoughts on that? Would that be better than the pipe sign? (and did we
> discuss that before, and I am simply missing it)
>
> Andrus
>
>
This archive was generated by hypermail 2.0.0 : Thu May 01 2008 - 10:17:34 EDT