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

Nikita Timofeev closed CAY-2470.
--------------------------------
    Resolution: Fixed

*4.1*: 
https://github.com/apache/cayenne/commit/8047c588442692992c752bdf5ad5710f32eb18b7
*4.0*: 
https://github.com/apache/cayenne/commit/9495e30b1b3502f710019b36e683be3ab873b3ad

> Can't bind SQLExec parameters in a loop
> ---------------------------------------
>
>                 Key: CAY-2470
>                 URL: https://issues.apache.org/jira/browse/CAY-2470
>             Project: Cayenne
>          Issue Type: Bug
>          Components: Core Library
>    Affects Versions: 4.1.M2, 4.0
>            Reporter: Andrus Adamchik
>            Assignee: Nikita Timofeev
>            Priority: Minor
>             Fix For: 4.0.1, 4.1.M3
>
>
> I am trying to use SQLExec for batch inserts, reusing the basic query:
> {noformat}
> SQLExec inserter = SQLExec.query("insert into t1 (id) values (#bind($id))");
> for(int i = 0; i < 2; i++) {
>    inserter.paramsArray(i).execute(context);
> }{noformat}
> This works on the first loop iteration, but fails on the second with a 
> duplicate PK error. Looks like the underlying "replacementQuery" is compiled 
> only once during the first "execute()" call and is cached on subsequent calls 
> even though the main query settings have changed.
> I suspect this issue affects other subclasses of IndirectQuery as well... We 
> need to clear their cached state if the settings affecting it change in the 
> main query.
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to