2019-04-28 13:24
public M findByPk(){
Table table = _getTable();
String[] pKeys = table.getPrimaryKey();
if( pKeys == null ){
log.debug(table.getName() + " 未找到主键字段");
pKeys = new String[0];
}
Object[] vals = new Object[pKeys.length];
for (int i=0; i vals[i] = get(pKeys[i]);
}
return findById(vals);
}
2019-04-28 07:05
应该是这样的,3.5版里面,有两个 findById 方法,接受两种类型的参数
public M findById(Object idValue) {
return findByIdLoadColumns(new Object[]{idValue}, "*");
}
public M findById(Object... idValues) {
return findByIdLoadColumns(idValues, "*");
}
我的代码里面用了 findById(Object... idValues) 这个。
但是从 3.6 开始, findById(Object... idValues) 这个方法又正好被删除了。
由于 findById(Object idValue) 这个方法还在,所以编译不报错,没警告。
但是 findById 里面的行为已经变了,导致查不到数据,执行也不报错。
就是这样了。
2019-04-23 09:02
@JFinal 调整后,对于这两个方法的用途我没有疑问。只是觉得这样调整后,版本升级会比较麻烦。不敢升,不知道会不会有其他类似的情况。这样的调整编译不报错,没警告,只有覆盖测试...