Ok. I have same thoughts, but was surprised by this result and didn't find any word about arrays binding in docs... So I'm creating an issue.
Evgeny. -----Original Message----- From: Andrus Adamchik [mailto:[email protected]] Sent: Friday, December 11, 2009 3:51 PM To: [email protected] Subject: Re: Binding Array in SQLTemplate 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 пользователь Рябицкий Евгений > <[email protected]> написал: >> 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. >> >
