刚刚在修改一个老系统是将jfinal 升级到了 4.8 其中 4.6版本的修改 findById findByIds 会导致问题
原因在于原来findById 本身就有可能是个数组调用findById 后 再次包装 ,对于已有系统findById(Object ...ids)写法较为常见特别是用于二次封装时 如果不兼容处理 修改量太大而且不一定能改完容易有暗坑
之后修改 findByIdLoadColumns 方法如下
public M findByIdLoadColumns(Object[] idValues, String columns) {
Table table = _getTable();
if(idValues.length==1 && ArrayUtil.isArray(idValues[0])){
idValues=(Object[]) idValues[0];
}
if (table.getPrimaryKey().length != idValues.length)
throw new IllegalArgumentException("id values error, need " + table.getPrimaryKey().length + " id value");
Config config = _getConfig();
String sql = config.getDialect().forModelFindById(table, columns);
List<M> result = find(config, sql, idValues);
return result.size() > 0 ? result.get(0) : null;
}