【发布时间】:2018-09-07 06:41:14
【问题描述】:
我有一个spring-boot 应用程序,该应用程序具有一次处理和保存大约 100 个对象的列表的服务。
在处理状态之前一切似乎都很好,但调用MongoRepository 的save 方法会引发以下异常:
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;
}
在处理一些 json 数据作为输入后,我创建了这个 Ticket 文档的列表。我需要将此列表保存在 mongo 中。
这是在做什么:
@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> {
}
【问题讨论】:
-
我希望您将“id”字段集保存到数据库中。这似乎始终是相同的值。您可能需要自己注释某些生成器或设置唯一 ID?
-
我同意@Konrad 所说的。尝试创建您自己的唯一 ID 或将其保留为空白/空。 mongo 会为你创建新的 id
标签: java mongodb spring-boot spring-mongodb