You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Andrew Lindesay (JIRA)" <ji...@apache.org> on 2014/08/01 11:46:38 UTC

[jira] [Closed] (CAY-1935) EJBQL; Handling Collection as Parameter in IN Expression

     [ https://issues.apache.org/jira/browse/CAY-1935?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Andrew Lindesay closed CAY-1935.
--------------------------------

    Resolution: Fixed

> EJBQL; Handling Collection as Parameter in IN Expression
> --------------------------------------------------------
>
>                 Key: CAY-1935
>                 URL: https://issues.apache.org/jira/browse/CAY-1935
>             Project: Cayenne
>          Issue Type: Improvement
>    Affects Versions: 3.2M1
>            Reporter: Andrew Lindesay
>             Fix For: 3.2.M2
>
>         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|http://glassfish.10926.n7.nabble.com/Use-of-parameters-in-IN-statement-td87353.html] and [here|http://stackoverflow.com/questions/2772305/jpql-in-clause-java-arrays-or-lists-sets].
> 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
(v6.2#6252)