Configurable SQL Statement generation

2006-07-05 Thread Guido Beutler
Hi,

I would like to generate to generate SQL select statements for DB2 in a managed 
environment (JBoss). All Select Statements should be extended by for read 
only. I found that it is possible to hardcode this at 

org.apache.ojb.broker.accesslayer.sql.SqlSelectStatement

at 

buildStatement()

There I added : 

if(!hasParent())
{
stmt.append( FOR READ ONLY);
}

at the end where hasParent is another modification at 

org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement

protected boolean hasParent()
{
return m_parentStatement==null?false:true;
}

This is for avoiding 'for read only' when the select statement is a sub 
statement of an other sql statement. The clause can not be used in sub queries 
like 'in ( select x from y)'.
This is working but is not very useable and it is platform dependent. So the 
modified OJB Version won't work with other databases. I would like to implement 
a better platform dependent solution. Is there a way to get the platform when 
running in a managed environment? Is there a existing better way to implement 
it or a better way to generate platform dependent SQL? The second thing is, why 
m_parentStatement is set when executing selects by primary key during 
insert/update statement execution? I found that these selects were not extended 
and the reason was that m_parentStatement was set althoug the select statement 
is not executed as sub select but as identity select.
Thanks in advance, 

best regards,

Guido


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Configurable SQL Statement generation

2006-07-05 Thread Guido Beutler
 Hi,
 
 I would like to generate to generate SQL select statements for DB2 in a
 managed environment (JBoss). All Select Statements should be extended by
 for read only. I found that it is possible to hardcode this at 
 
 org.apache.ojb.broker.accesslayer.sql.SqlSelectStatement
 
 at 
 
 buildStatement()
 
 There I added : 
 
 if(!hasParent())
 {
stmt.append( FOR READ ONLY);
 }
 
 at the end where hasParent is another modification at 
 
 org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement
 
 protected boolean hasParent()
 {
return m_parentStatement==null?false:true;
 }
 
 This is for avoiding 'for read only' when the select statement is a sub
 statement of an other sql statement. The clause can not be used in sub
 queries like 'in ( select x from y)'.
 This is working but is not very useable and it is platform dependent. So the
 modified OJB Version won't work with other databases. I would like to
 implement a better platform dependent solution. Is there a way to get the
 platform when running in a managed environment? Is there a existing better
 way to implement it or a better way to generate platform dependent SQL? The
 second thing is, why m_parentStatement is set when executing selects by
 primary key during insert/update statement execution? I found that these
 selects were not extended and the reason was that m_parentStatement was set
 althoug the select statement is not executed as sub select but as identity
 select.
 Thanks in advance, 
 
 best regards,
 
 Guido


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]