Ah good catch. Looking at the BindDirective code, it doesn't properly
support arrays, only collections. I guess we need to change that and
treat arrays the same way.
Andrus
On Dec 11, 2009, at 5:42 AM, Evgeny Ryabitskiy wrote:
> No answer...
> But history points to Andrus :)
>
> Evgeny.
>
> 10 ÄÅËÁÂÒÑ 2009 Ç. 10:55 ÐÏÌØÚÏ×ÁÔÅÌØ òÑÂÉÃËÉÊ å×ÇÅÎÉÊ
> <eryabitski..iasoft.ru> ÎÁÐÉÓÁÌ:
>> Hello!
>> I try to use array (like String[]) as a bind parameter.
>>
>> In follow lines:
>>
>> String[] artistNames = new String[2];
>> artistNames[0] = "Artist1";
>> artistNames[1] = "Artist3";
>> String sql = "SELECT * FROM ARTIST WHERE ARTIST_NAME in
>> (#bind($ARTISTNAMES))";
>> SQLTemplate query = new SQLTemplate(Artist.class, sql);
>> query.setParameters(Collections.singletonMap("ARTISTNAMES",
>> artistNames));
>> List result =
>> getDomain().createDataContext().performQuery(query);
>>
>> I got this query in logs:
>>
>> INFO: SELECT * FROM ARTIST WHERE ARTIST_NAME in (?) [bind: 1:<
>> 'Artist1','Artist3'>]
>> 10.12.2009 10:48:09 org.apache.cayenne.access.QueryLogger
>> logSelectCount
>> INFO: === returned 0 rows. - took 0 ms.
>>
>>
>> So... What does it mean? [bind: 1:< 'Artist1','Artist3'>] ?
>> I mean what is a purpose of using array in bind? For what queries
>> it should be used?
>>
>> Evgeny.
>>
>
This archive was generated by hypermail 2.0.0 : Fri Dec 11 2009 - 07:51:57 EST