如何检查使用MongoTemplate插入到集合中的值是否成功保存?
MongoTemplate template;
User user=new User();
user.name="Mark";
user.email="mark@mark.com"
template.insert(user);MongoTemplate中的Insert、save或任何方法不返回true或false。
发布于 2016-07-04 13:37:02
它将在下面的方法流中抛出异常:
template.insert(object)
|
|
templateinsert(Object objectToSave, String collectionName)
|
|
protected <T> void doInsert(String collectionName, T objectToSave, MongoWriter<T> writer)
|
|
protected Object insertDBObject(final String collectionName, final DBObject dbDoc, final Class<?> entityClass)
|
|以下是insertDBObject的源代码
protected Object insertDBObject(final String collectionName, final DBObject dbDoc, final Class<?> entityClass) {
if(LOGGER.isDebugEnabled()) {
LOGGER.debug("Inserting DBObject containing fields: {} in collection: {}", dbDoc.keySet(), collectionName);
}
return this.execute(collectionName, new CollectionCallback() {
public Object doInCollection(DBCollection collection) throws MongoException, DataAccessException {
MongoAction mongoAction = new MongoAction(MongoTemplate.this.writeConcern, MongoActionOperation.INSERT, collectionName, entityClass, dbDoc, (DBObject)null);
WriteConcern writeConcernToUse = MongoTemplate.this.prepareWriteConcern(mongoAction);
WriteResult writeResult = writeConcernToUse == null?collection.insert(new DBObject[]{dbDoc}):collection.insert(dbDoc, writeConcernToUse);
MongoTemplate.this.handleAnyWriteResultErrors(writeResult, dbDoc, MongoActionOperation.INSERT);
return dbDoc.get("_id");
}
});
}它会在你写失败的时候抛出异常,它们是运行时异常。运行时执行由MongoExceptionTranslator .So翻译,任何没有抛出任何异常的插入都是成功的。
https://stackoverflow.com/questions/38177255
复制相似问题