------------现象
debug时候,停在查询出结果的位置,objs有值,把参数放到数据库里,查不到东西,跑完程序,activityInstId在数据库中出现,就是可以查到了,怀疑跟事务有关,可是为啥数据库查不到呢
oracle数据库
```java
**--------------后台**
// 获取当期活动之前的已审批人列表
DataObject param = DataObjectUtil
.createDataObject("com.primeton.das.datatype.AnyType");
param.set("processinstid", processInstId);
param.set("activityinstid", activityInstId);
objs = DatabaseExt.queryByNamedSql("default",
"com.sie.ems.util.wf.getBeenWorkPartByLastAct", param);
**--------------执行sql语句**
select ww.workitemid,
ww.participant,
ww.partiname,
ww.activityinstid
from wfactivityinst wb,
wfworkitem ww,
(select max(wa.createtime) createtime,
wa.activitydefid,
wa.processinstid
from wfactivityinst wa
where wa.processinstid = #processinstid#
and wa.activitydefid in
(select activitydefid
from (select distinct min(createtime) createtime,
activityinstname,
activitytype,
activitydefid
from wfactivityinst
where processinstid = #processinstid#
and activitytype = 'manual'
and currentstate = '7'
group by activityinstname,
activitytype,
activitydefid)
where (select min(createtime)
from wfactivityinst
where activitydefid in
(select activitydefid
from wfactivityinst
where activityinstid = #activityinstid#
and currentstate = '2')
and processinstid = #processinstid#) >= createtime
and activitydefid not in
(select activitydefid
from wfactivityinst
where activityinstid = #activityinstid#
and currentstate = '2'))
group by wa.activitydefid, wa.processinstid) maxwa
where wb.processinstid = maxwa.processinstid
and wb.activitydefid = maxwa.activitydefid
and maxwa.createtime = wb.createtime
and wb.activityinstid = ww.activityinstid
and ww.bizstate = 0
and ww.currentstate = 12
order by wb.createtime desc
```
一个事务里面你改了还是看得见的
read_commit 的事务隔离级别, 其它session是读取不到没有commit的数据的。
我猜和commit有关,在oracle中修改数据以后,没提交之前,查询结果是修改之后的结果
感谢各位老铁