NutzCN Logo
精华 关于 sql ,jdbc 的问题,。。。。。。。。。
发布于 2977天前 作者 Nutzjay 1702 次浏览 复制 上一个帖子 下一个帖子
标签:

因为复杂的sql 返回的结果总是0.所以就简化了,改成了下面的
String sqluu="select r.repairId from tapplyrepair r,TSERVICETYPE s,TREPAIRAPPEAR a,TApplyRepairInfo i where i.REPAIRId=12109573 " ;
ist list = null;
Sql sql=Sqls.create(sqluu);

       sql.setCallback(Sqls.callback.entities());   
        sql.setEntity(dao.getEntity(TaskDetail.class));  
       dao.execute(sql);

       list=sql.getList(TaskDetail.class);

查询返回的结果还是0,但直接复制到plsql里查是有数据的。

然后我索性把 sql改成最简单,String sqluu="select r.repairId from tapplyrepair r where i.REPAIRId=12109573“;
终于有返回结果。
所以很奇怪,from 后面多一张要查询的都表不行,但其他类里复杂的sql是可以执行的。是不是·要·清什么缓存??

14 回复

NutDao没有内置结果缓存的,即使是配置了daocache插件,也只是对指定的单表sql有缓存.

这里边的 where 后面的 i.repairid 都是 r.repairid. 帖子里打错字

@wendal 那上面的情况怎么回事

这样现象?

// 无结果
select r.repairId from tapplyrepair r,TSERVICETYPE s,TREPAIRAPPEAR a,TApplyRepairInfo i where i.REPAIRId=12109573
// 有结果
select r.repairId from tapplyrepair r where i.REPAIRId=12109573

@nutzjay 的确诡异
是不是驱动太老,或者有数据库中间件?

@wendal 和引用的包有关系吗

@wendal 是很老的项目,能说的具体表吗

@nutzjay 真不好说,毕竟jar有千千万万个

可有数据库连接参数?jdbc url 贴出来看看

按"帝国骑士"的分析,是因为 Oracle的自动inner join导致的问题, 应使用left join改写原SQL

原因是, 下面两条SQL, 在MySQL和Oracle下的行为不一致.

select r.repairId from tapplyrepair r,TSERVICETYPE s,TREPAIRAPPEAR a,TApplyRepairInfo i where e.REPAIRId=12109573
select r.repairId from tapplyrepair r where r.REPAIRId=12109573

添加回复
请先登陆
回到顶部