Some DBMS (like Ingres) don't support update on queries with join, we have to 
use subqueries instead
----------------------------------------------------------------------------------------------------

                 Key: ODE-628
                 URL: https://issues.apache.org/jira/browse/ODE-628
             Project: ODE
          Issue Type: Improvement
          Components: BPEL Runtime
         Environment: BPMS 6.0 beta2
            Reporter: Oleg Zenzin


There's at least one place where we have error during runtime if we use 
Hibernate on Ingres for persistance: class 
org.apache.ode.daohib.bpel.CorrelatorDaoImpl. The query "from 
HCorrelatorSelector as hs where hs.processType = :processType and 
hs.correlator.correlatorId = :correlatorId" used in this class makes Hibernate 
to implicitly generate SQL with join for update. 

Unfortunately some DBMS (like Ingres for instance) do not support update for 
queries with JOIN. The workaround is to exlicitly define HQL with subquery 
instead:
"from HCorrelatorSelector as hs where hs.processType = :processType and 
hs.correlatorId = (select hc.id from HCorrelator hc where hc.correlatorId = 
:correlatorId)"

In cases like that we need dynamically define which HQL to use, i.e. we need to 
know which kind of DBMS we are running under. The definitive indicator is 
dialect (instance of org.hibernate.dialect.Dialect) is set for the current 
Session. We don't have possiblity now to access Session properties (all 
indicators are private fields). We should add some indicator which would be 
dynamically accessible for assessment.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to