cayenne-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrew Lindesay (JIRA)" <>
Subject [jira] [Updated] (CAY-1935) EJBQL; Handling Collection as Parameter in IN Expression
Date Sat, 17 May 2014 06:03:14 GMT


Andrew Lindesay updated CAY-1935:

    Attachment: CAY-1935-17may2014_in.patch

> EJBQL; Handling Collection as Parameter in IN Expression
> --------------------------------------------------------
>                 Key: CAY-1935
>                 URL:
>             Project: Cayenne
>          Issue Type: Improvement
>    Affects Versions: 3.2M1
>            Reporter: Andrew Lindesay
>         Attachments: CAY-1935-17may2014_in.patch
> Consider an EJBQL expression fragment...
> {noformat}
> ... p.toArtist IN (:artists)
> {noformat}
> ...where :artists may be bound to a Collection such as List or Set.  Cayenne presently
takes the named or positional parameter bound to the collection to be a _member_ of the set
of elements to which the lvar should be a member rather than the set itself.  Obviously this
doesn't process correctly.
> This patch will mean that in this situation above, the parameter bound to the Collection
is _expanded_ to actually be the set of elements to which the LVAR should be a member.
> There is some discussion of this [here|]
and [here|].
> Because some query systems support an unbracketed collection-parameter for IN, "EJBQLParser.jjt"
has been modified in this patch to allow for either approach; hence a query of the following
form would also be supported;
> {noformat}
> ... p.toArtist IN :artists
> {noformat}
> Note that this new functionality only applies if there is a _single_ unbracketed parameter
or if there is a _single_ bracketed parameter - it does not take effect if there are multiple
parameters in play.  If there is a single unbracketed parameter that is not a collection then
it will function as if that parameter were bracketed.

This message was sent by Atlassian JIRA

View raw message