[Bug] inner join关联查询出现副表查询数量超限的问题
看起来是 JOIN 缓存未正确读取到导致重复执行 SQL,升级到 7.0.3 再试试
使用的6.3.0版本,暂时无法升级版本,有其他方案解决吗(除了加大执行SQL数量限制,指标不治本),我改了一部分代码,驼峰转换,如下:
https://github.com/Tencent/APIJSON/issues/615#issuecomment-2265718955
这里处理后会有个n+1的问题,这里item里面还是驼峰的,但是on.getTargetKey()已经是蛇形了,所以不会走下面childMap.put(viceSql, curItem)缓存
目前想到的解决方案是改源码,item转为蛇形,不知道是否有其他方案
又出现了另一个问题,我的查询需要控制数据权限,所以在verifyAccess将stationCode条件加进去,在join也加进去,但是副表的缓存还是不走,导致n+1查询
打断点是因为这里的SQL where条件顺序乱了
#615 (comment) 这里处理后会有个n+1的问题,这里item里面还是驼峰的,但是on.getTargetKey()已经是蛇形了,所以不会走下面childMap.put(viceSql, curItem)缓存
目前想到的解决方案是改源码,item转为蛇形,不知道是否有其他方案
需要改源码处理下,判断 JSONResponse.IS_FORMAT_HYPHEN https://github.com/Tencent/APIJSON/blob/master/APIJSONORM/src/main/java/apijson/JSONResponse.java#L25-L34
@gxmanito 统一在 DemoObjectParser 重写 newSQLConfig 并 putWhere 试试
https://github.com/Tencent/APIJSON/issues/769#issuecomment-2462514023
在 DemoObjectParser 重写 newSQLConfig 并 putWhere还是不走缓存的,看断点是因为putWhere主表后就会到execute的viceConfig.putWhere(这时候join的where条件只是主表的),然后才是newSQLConfig的putWhere子表的条件(我权限赋值的)
当我加上join的putWhere时,又会导致顺序错乱,缓存还是读不到
@gxmanito 试试 AbstractSQLConfig.getWhere 中判断不包含这个键值对则统一 put

