Если при попытке вставить документ в коллекцию ничего не происходит или возникает OptimisticalLockException (при том, что очевидных поводов для этого исключения не наблюдается) советую проверить индексы коллекции. Особенно если индексы используются для геолокации.
К примеру есть у нас такой репозиторий:
К примеру есть у нас такой репозиторий:
@Componentнаследуется от такого класса:
public class TestRepository extends BaseRepository<TestEntity> {
@PostConstruct
public void init() {
ensureGeoIndex("testField");
}
}
@ComponentЕсли попытаться вставить запись вот так:
public class BaseRepository<T extends BaseEntity> {
@Autowired
protected MongoOperations op;
protected void ensureGeoIndex(String fieldName) {
GeospatialIndex index = new GeospatialIndex(fieldName);
IndexOperations indexOperations = op.indexOps(domainClass);
indexOperations.ensureIndex(index);
}
}
TestEntity testEntity=new TestEntity();testEntity.setTestField("testValue");testRepository.save(testEntity);в базу ничего не запишется, т.к. монга ожидает в качестве значения примерно такую структуру:
{ type: "Point", coordinates: [ -1, 1 ] }