DuplicateKeyException в mongodb и весенней загрузке - PullRequest
0 голосов
/ 24 мая 2018

Я использую Spring Boot и MongoDB и могу успешно сохранить документ в MongoDB.Когда я пытался вставить второй документ, он показывает duplicatekeyexception.Общее сообщение об исключении выглядит следующим образом:

com.mongodb.DuplicateKeyException: запись не удалась с кодом ошибки 11000 и сообщением об ошибке 'E11000 коллекция повторяющихся ошибок: индекс Football_Admin.SignUp: id ключ дубликата: {: 0} '

Код выглядит следующим образом:

SignUpRepository.java

package com.admin.Repository;

import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;

import com.admin.Model.SignUp;

@Repository
public interface SignUpRepository extends MongoRepository<SignUp,String>{

}

Контроллер

@Controller
@RequestMapping("/SignIn_Up")
public class HomeController {

    @Autowired
    SignUpRepository repository;


    @RequestMapping(value = "/addadmin", method = RequestMethod.POST)
    public String addAdmin(@ModelAttribute("SignUp") SignUp sign) throws NoSuchAlgorithmException,InvalidKeySpecException {
        String  originalPassword = sign.getPassword();
        String generatedSecuredPasswordHash = generateStorngPasswordHash(originalPassword);
        String email = sign.getEmail();
        String fullname = sign.getFullName();
        try {
        sign.setEmail(email);
        sign.setFullName(fullname);
        sign.setPassword(generatedSecuredPasswordHash);
        repository.save(sign);
        }
        catch (DuplicateKeyException e) {
            e.printStackTrace();
        }
        System.out.println(generatedSecuredPasswordHash);
        System.out.println("Email name is:"+sign.getEmail());
        System.out.println("Full Name is:"+sign.getFullName());
        System.out.println("Password is:"+sign.getPassword());
        return "welcome";
    }

Сущность

package com.admin.Model;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document(collection="SignUp")
public class SignUp {
@Id
private int id;
private String fullName;
private String email;
private String password;
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getFullName() {
    return fullName;
}
public void setFullName(String fullName) {
    this.fullName = fullName;
}
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}

public String toString() {
    return id+""+fullName+""+password;
}
public String getEmail() {
    return email;
}
public void setEmail(String email) {
    this.email = email;
}


}

1 Ответ

0 голосов
/ 24 мая 2018

Драйвер MongoDb не знает, как создать уникальный идентификатор типа int при вставке, чтобы вы получили исключение уникального индекса

Так что вы либо вручную создаете и поддерживаете свой индекс (довольно сложно), либо меняете свойтип поля идентификатора до ObjectId

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...