Весенний ботинок - Монго | Сохранение большой коллекции объектов с ошибкой дубликата ключа - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть приложение spring-boot, в котором есть служба для обработки и сохранения списка из примерно 100 объектов за один раз.

Все выглядит нормально до состояния обработки, но вызов save метода MongoRepository вызывает следующее исключение:

com.mongodb.DuplicateKeyException: Write failed with error code 11000 and error message 'E11000 duplicate key error collection: uhtableau_db.ticket index: _id_ dup key: { : 0 }'

Я повторил попытку после очистки базы данных, но та же ошибка. Невозможно понять, что я делаю неправильно.

Вот объект документа:

@Document
public class Ticket {

public Ticket(){

}

@Id
private long id;


private long ticket_id;  // this is the field in the json which i am processing


private String topic;

private List<String> tag;


private String type;


private long brand;
private long group;


private String priority;


private String status;



private String created_at;


private String channel;

}

Я создаю список этого Ticket документа после обработки некоторых данных JSON в качестве входных данных. Мне нужно сохранить этот список в монго.

Вот что я делаю:

 @Autowired
 TicketRepository ticketRepository;

@GetMapping("/tickets")
public void saveTicketData(){

    List<Ticket> tickets = ZendeskClient.parseJsonForTicketList(ticketJson);
    ticketRepository.save(tickets);
}

А TicketRepository:

public interface TicketRepository extends MongoRepository<Ticket, Long> {

}

1 Ответ

0 голосов
/ 07 сентября 2018

Вы можете использовать соответствующий объект для @Id, если вам нужна возможность использовать нулевые значения (Используется Spring Mongo для создания новых вставок)

@Id
private Long id

Конечно, метод "parseJsonForTicketList"в фазе синтаксического анализа установить идентификатор со значением 0.

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