方法中Dao refresh()的Javadoc状态:
抛出: SQLException - 关于任何SQL问题或者如果在表中找不到数据项,或者如果找到的数据超过1项且数据为id。
但是 com.j256.ormlite.stmt.mapped.MappedRefresh 这个类有另一个Javadoc定义,并返回一个结果代码,一直备份到刷新和用户。
/**
* Execute our refresh query statement and then update all of the fields in data with the fields from the result.
*
* @return 1 if we found the object in the table by id or 0 if not.
*/
public int executeRefresh(DatabaseConnection databaseConnection, T data, ObjectCache objectCache)
throws SQLException {
@SuppressWarnings("unchecked")
ID id = (ID) idField.extractJavaFieldValue(data);
// we don't care about the cache here
T result = super.execute(databaseConnection, id, null);
if (result == null) {
return 0;
}
// copy each field from the result into the passed in object
for (FieldType fieldType : resultsFieldTypes) {
if (fieldType != idField) {
fieldType.assignField(data, fieldType.extractJavaFieldValue(result), false, objectCache);
}
}
return 1;
}
这是一个错误还是只是Dao.refresh的Javadoc错误?
我在看OrmLite 4.41。
答案 0 :(得分:0)
内部方法通常具有不完美的Javadoc,因为它仅适用于开发人员。此外,我倾向于不记录每个抛出的异常。
在这种情况下,MappedRefresh.executeRefresh(...)
方法文档看起来很不错,除非它没有记录异常。如果您查看调用super.execute(...)
的{{1}}行,您会看到它有以下测试/抛出:
MappedQueryForId.execute(...)
} else if (result == DatabaseConnection.MORE_THAN_ONE) {
logger.error("{} using '{}' and {} args, got >1 results", label, statement,
args.length);
logArgs(args);
throw new SQLException(label + " got more than 1 result: " + statement);
}
和其他方法也可以针对各种数据或数据库问题抛出fieldType.assignField(...)
。
所以SQLException
javadoc是正确的。 Dao.refresh(...)
javadoc也是正确的,但缺少有关异常的详细信息。