static final String TO_DO_WORK_NEW = "select obj from WorkItem obj , TFFApplicaFlowRel t " + "inner join t.application a where obj.taskInstance.id = t.id and a.deleted=0 and (obj.state = ? or obj.state = ? ) "; 这样是不会出现多的“1_” ,但没找到问题原因。比较头疼。
select count(*) as col_0_0_ from T_FF_RT_WORKITEM workitem0_, T_FF_RT_TASKINSTANCE taskinstan1_, T_Q_PUB_APPLICATION tqpubappli2_ where taskinstan1_1_.APP_ID=tqpubappli2_.ID 这个就是count的时候 这里报错就卡主不下去了
select count(*) as col_0_0_ from T_FF_RT_WORKITEM workitem0_, T_FF_RT_TASKINSTANCE taskinstan1_, T_Q_PUB_APPLICATION tqpubappli2_ where taskinstan1_1_.APP_ID=tqpubappli2_.ID 这个就是count的时候 这里报错就卡主不下去了hibernate语句, 就是像你问题里面的语句那样的
CriteriaProxy 的 createAlias 和 createCriteria ,也是和上面一样的状况,只会出现上部分电脑上 都是sql解析的时候 ,where后的别名多了“1_”。
网上说 createAlias 和 createCriteria的区别是:createCriteria后面紧跟条件,createAlias 需要别名但不用紧跟着
static final String TO_DO_WORK_NEW = "select obj from WorkItem obj , TFFApplicaFlowRel t "
+ "inner join t.application a where obj.taskInstance.id = t.id and a.deleted=0 and (obj.state = ? or obj.state = ? ) ";
这样是不会出现多的“1_” ,但没找到问题原因。比较头疼。
关键就是这样 他生产的 sql 是错误的 别名不对应
关键就是这样 他生产的 sql 是错误的 别名不对应
那就是你的hql的别名有问题了,你把你的语句先写成SQL跑一下,没问题了再换成hql,hibernate不会出问题的。
关键就是这样 他生产的 sql 是错误的 别名不对应
那就是你的hql的别名有问题了,你把你的语句先写成SQL跑一下,没问题了再换成hql,hibernate不会出问题的。
仔细看下 java代码里的 ,别名是没有问题的,控制台打印出来解析好 的sql就有问题了,紧跟where后面的那个别名比from后面的多出一个“1_”。
PS:同个代码 ,这个情况只出现在个别电脑上,我们部署在外网的系统是正常的,解析也OK
select
count(*) as col_0_0_
from
T_FF_RT_WORKITEM workitem0_,
T_FF_RT_TASKINSTANCE taskinstan1_,
T_Q_PUB_APPLICATION tqpubappli2_
where
taskinstan1_1_.APP_ID=tqpubappli2_.ID
这个就是count的时候 这里报错就卡主不下去了
select
count(*) as col_0_0_
from
T_FF_RT_WORKITEM workitem0_,
T_FF_RT_TASKINSTANCE taskinstan1_,
T_Q_PUB_APPLICATION tqpubappli2_
where
taskinstan1_1_.APP_ID=tqpubappli2_.ID
这个就是count的时候 这里报错就卡主不下去了hibernate语句, 就是像你问题里面的语句那样的