public boolean getHadError() { String error = getError(); return error != null && !error.isEmpty(); }
/** * @return number updated */ public int getUpdatedCount() { return getUpdatedExisting() ? getN() : 0; }
/** * @param query * @param entity * @param createIfMissing * @param <T> * @return */ public <T> UpdateResults<T> updateFirst(Query<T> query, T entity, boolean createIfMissing) { LinkedHashMap<Object, DBObject> involvedObjects = new LinkedHashMap<Object, DBObject>(); DBObject dbObj = mapr.toDBObject(entity, involvedObjects); UpdateResults<T> res = update(query, dbObj, createIfMissing, false, getWriteConcern(entity)); //update _id field CommandResult gle = res.getWriteResult().getCachedLastError(); if (gle != null && res.getInsertedCount() > 0) dbObj.put(Mapper.ID_KEY, res.getNewId()); postSaveOperations(entity, dbObj, involvedObjects); return res; }
} else { Query<T> query = (Query<T>) createQuery(entity.getClass()).filter(Mapper.ID_KEY, id); wr = update(query, new BasicDBObject("$set", dbObj), false, false, wc).getWriteResult(); UpdateResults<T> res = new UpdateResults<T>(wr); if (gle != null && res.getUpdatedCount() == 0) throw new UpdateException("Not updated: " + gle);
wc); wr = res.getWriteResult(); if (res.getUpdatedCount() != 1) throw new ConcurrentModificationException("Entity of class " + entity.getClass().getName() + " (id='" + idValue + "',version='" + oldVersion + "') was concurrently updated.");
/** * @return the new _id field if an insert/upsert was performed */ public Object getNewId() { return getInsertedCount() == 1 && wr.getLastError().containsField("upserted") ? wr.getLastError().get("upserted") : null; }
return new UpdateResults<T>(wr);
/** * @return number inserted; this should be either 0/1. */ public int getInsertedCount() { return !getUpdatedExisting() ? getN() : 0; }