Ho una classe contratto definita in questo modo:Spring Data MongoDB: come ignorare il campo indicizzato univoco quando Document è incorporato in un altro?
@Document
public class Contract {
@Id
private String id;
@Indexed(unique = true)
private String ref;
private String status = "pending";
// getter & setter & hashcode & equals & tostring...
}
voglio salvare lo stato contratto nel corso del tempo, così ho creato una classe di versione come questa:
@Document
public class Version {
@Id
private String id;
private Contract contract;
private Instant createdAt;
// getter & setter & hashcode & equals & tostring...
}
Quando si tenta di salvare più volte l'oggetto versione nel tempo, ho un'eccezione di chiavi duplicate. Penso che sia l'indice chiave duplicato sul riferimento del contratto che si lamenta qui.
Come posso ottenere questo tipo di cose?
Potrebbe fornire un piccolo frammento di codice che mostra il tuo problema? Il modo in cui hai descritto il tuo modello, nessuna eccezione dovrebbe essere generata dal momento che l'oggetto Contatto è nidificato all'interno della Versione, il che significa che un contatto in una versione verrà memorizzato nella "versione (s)" come documento secondario e l'indice su la raccolta "contatti (i)" non dovrebbe avere importanza. –
Non ho scritto più di quello. Basta creare due oggetti che uno è annidato in un altro con un indice univoco e cercare di salvare due oggetti con lo stesso contrat sottostante e si avrà un'eccezione di immissione duplicata. –