您不应该调用createOrUpdate,除非您的对象已经设置了一个id字段. ORMLite确定它是否存在于数据库中的方式是在其上执行查询.代码:
ID id = extractId(data);
// assume we need to create it if there is no id <<<<<<<<<<<<<<<<<<<<<<<
if (id == null || !idExists(id)) {
int numRows = create(data);
return new CreateOrUpdateStatus(true,false,numRows);
} else {
int numRows = update(data);
return new CreateOrUpdateStatus(false,true,numRows);
}
我将扩大javadocs来解释这个更好.他们在那里很弱.抱歉.我已经将它们更新为:
This is a convenience method for creating an item in the database if it does not exist. The id is extracted from the data argument and a query-by-id is made on the database. If a row in the database with the same id exists then all of the columns in the database will be updated from the fields in the data parameter. If the id is null (or 0 or some other default value) or doesn’t exist in the database then the object will be created in the database. This also means that your data item must have an id field defined.