MybatisPlus usa o método saveBatch para inserir em lote o problema de duplicação de ID do algoritmo floco de neve. (Java) |
O atributo de ID de entidade da inserção em lote usa a anotação @TableId(type = IdType.ASSIGN_ID) para realizar a geração de ID.
O código precisa inserir dados de entidade em lotes, use saveBatch(List); um erro de banco de dados é relatado: ID KEY entry is duplicado.
resolver :
Então tentei usar o método IdWorker.getId() para inserir o ID ao gerar a entidade e depois Debug para verificar a situação de geração do ID. Descobri que também havia um ID duplicado e observei os atributos da entidade para encontrar um regra. A entidade de ID duplicada e outros valores de atributo também são consistentes , existe uma suposição:
como os atributos da entidade são iguais, a atribuição do ID é afetada, resultando em IDs duplicados. Portanto, removi as entidades com atributos duplicados e gerados novamente.Com certeza, o ID não foi repetido.
Causa específica:
Como o tempo era relativamente curto naquela época, não vim verificar o código-fonte com pressa. Qual etapa causou esse problema, adicionarei mais tarde.