Also #3:

Since DbAdapter serves as SQLAction factory for the entire stack, you may 
install a Statement timeout-aware custom DbAdapter. There are also a few levels 
of indirection to do that. I think the simplest is to create a custom Module 
[1] like this:

public class MyModule implements Module {

    public void configure(Binder binder) {
        binder.bind(DbAdapterFactory.class).to(MyDbAdapterFactory.class);
    }
} 

and then implement MyDbAdapterFactory to return your own adapter, subclassing 
whatever DbAdapter is appropriate for your DB (e.g. MySQLAdapter), overriding 
it "getAction" method to return that action that can manipulate the statement 
timeout.

(Like I said, we need to do better in the future, so that you won't have to 
jump through so many hoops to access the JDBC layer)

Andrus


[1] https://cayenne.apache.org/docs/3.1/cayenne-guide/#customize 


> On Jun 20, 2019, at 10:49 AM, Andrus Adamchik <and...@objectstyle.org> wrote:
> 
> 
> 
>> On Jun 20, 2019, at 10:33 AM, zhengyan <zhengyan...@gmail.com> wrote:
>> 
>> Hi, I'm using the Cayenne3.1.2 version .
>> I want to set the QueryTimeout parameter , like the parameter in
>> JDBC setQueryTimeout(5);
>> Where I can set this parameter in Cayenne3.1.2?
>> 
>> Thanks !
> 
> Hi,
> 
> Unfortunately there's no direct way to do it, and you will have to implement 
> some roundabout approach:
> 
> 1. Your connection pool may support a default query timeout. E.g. DBCP has 
> "defaultQueryTimeout" config parameter.
> 2. You may need to subclass your SelectQuery, to implement a custom 
> "createSQLAction" method, them subclass your DB-specific SelectAction to 
> control the Statement.
> 
> The second solution would require poking inside a few Cayenne internals, but 
> is not as scary as it may seem :)
> 
> Also I made a note to explore exposing JDBC Statements in some way for user 
> customization, so hopefully the future versions of Cayenne will allow for a 
> more direct approach.
> 
> Andrus
> 
> [1] https://commons.apache.org/proper/commons-dbcp/configuration.html
> 

Reply via email to