Configurable SQL Statement generation
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
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]