Ошибка дублирующего идентификатора ключа для saveAll () при использовании UUID, как и для идентификатора объекта в пн go дБ - PullRequest
0 голосов
/ 27 февраля 2020

Я реализовал решение, в котором я использую UUID в качестве идентификатора для объекта в пн go дБ. Проблема, с которой я сталкиваюсь, заключается в том, что, когда мы пытаемся использовать метод saveAll () из репозитория mon go, он вызывает исключение повторяющегося первичного ключа. Может кто-нибудь предложить решение для этого.

@Configuration
@EnableMongoAuditing
public class MongoConfigurations {

    /**
     * this we need for form validations to check for mandatory fields etc....
       i.e. to enabled @NotBlank etc.. for Mongo model class 
     */
    @Bean
    public ValidatingMongoEventListener validatingMongoEventListener() {
        return new ValidatingMongoEventListener(validator());
    }

    @Bean
    public LocalValidatorFactoryBean validator() {
        return new LocalValidatorFactoryBean();
    }

    /**
     * this we need for UUID generation
     */
    @Bean
    **public GenerateUUIDListener generateUUIDListener() {
        return new GenerateUUIDListener();
    }**

    @Bean
    public MyMongoAuditor myMongoAuditor() {
        return new MyMongoAuditor();
    }
}



public class GenerateUUIDListener extends AbstractMongoEventListener<Persistable> {
    @Override
    public void onBeforeConvert(BeforeConvertEvent<Persistable> event) {
        Persistable entity = event.getSource();
        if (entity.isNew()) {
            entity.setId(UUID.randomUUID());
        }
    }
}
...