Я получаю исключение дубликата ключа (см. Внизу) при сохранении объекта в БД go. Однако код довольно прост, и сначала он пытается получить объект:
@Service
public class UsersPlayersService extends AbstractService {
public UsersPlayers add(String firebaseId, UserPlayerDetails userPlayerDetails) {
UsersPlayers usersPlayers = usersPlayersRepository.findByFirebaseId(firebaseId);
if (usersPlayers == null) {
usersPlayers = new UsersPlayers();
}
usersPlayers.setFirebaseId(firebaseId);
Set<UserPlayerDetails> details = usersPlayers.getUserPlayerDetails();
details.remove(userPlayerDetails);
details.add(userPlayerDetails);
return usersPlayersRepository.save(usersPlayers);
}
}
Контроллер покоя:
@PostMapping(value = "/{firebaseId}/add")
@ApiOperation(value = "Add user player details to existing user's players, create if it doesn't exist")
public UsersPlayers add(
@PathVariable("firebaseId") String firebaseId,
@RequestBody UserPlayerDetails userPlayerDetails) {
return usersPlayersService.add(firebaseId, userPlayerDetails);
}
Мой объект выглядит так:
class UsersPlayers {
public UsersPlayers() {}
@Id
private ObjectId id;
@JsonProperty
@Indexed(unique = true)
private String firebaseId;
...
И ошибка:
org.springframework.dao.DuplicateKeyException: E11000 duplicate key error collection: fantisserie.UsersPlayers index:
firebaseId dup key: { : "UWRQZJzLMVesBpwSVQywfBIgw5j2" }; nested exception is com.mongodb.MongoWriteException: E1100
0 duplicate key error collection: fantisserie.UsersPlayers index: firebaseId dup key: { : "UWRQZJzLMVesBpwSVQywfBIgw5
j2" }
at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoException
Translator.java:101) ~[spring-data-mongodb-2.1.11.RELEASE.jar!/:2.1.11.RELEASE]
at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:
2793) ~[spring-data-mongodb-2.1.11.RELEASE.jar!/:2.1.11.RELEASE]
Любые идеи о том, что я делаю неправильно, очень ценятся!