2014-11-18 13 views
7

Sto lavorando con Spring MongoDb.Spring mongodb get ID dell'articolo inserito dopo Save

creo varie entità che utilizzano insert metodo: http://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/MongoOperations.html#insert-java.lang.Object-

Tuttavia, tutti i metodi di ritorno void. Devo restituire lo ObjectId del documento inserito.

Qual è il modo migliore per farlo?

+0

'Se il tuo oggetto ha una proprietà" Id ", verrà impostato con l'Id generato da MongoDB', avrà un attributo chiamato" Id ". Una volta chiamato questo metodo, l'oggetto passato avrà il suo' Id' attributo riempito – BatScream

+0

Inoltre non è necessario restituire nulla, poiché l'oggetto sarebbe mutabile – BatScream

+0

Grazie. Avrei bisogno di restituirlo nella risposta della mia API REST. Ho una API esposta per creare un documento –

risposta

18

Questo è piuttosto interessante e ho pensato di condividere. Ho solo capito la soluzione per questo con l'aiuto di BatScream commento di cui sopra:

Si potrebbe creare un oggetto e inserirla nel MongoDB:

Animal animal = new Animal(); 
    animal.setName(name); 
    animal.setCat(cat); 

    mongoTemplate.insert(animal); 

La classe animale si presenta così con getter e le impostazioni per tutti i campi:

public class Animal { 

    @Id 
    @JsonProperty 
    private String id; 
    @JsonProperty 
    private String name; 
    @JsonProperty 
    private String cat; 

    public String getId() { 
     return id; 
    } 
} 

dopo aver fatto l'inserto sotto mongoTemplate.insert(animal);, si può effettivamente chiamare il metodo animal.getId() e sarà tornare indietro l'ObjectId che è stato creato.

+0

Ho provato 'mongoOperations.insert (thing)', seguito da 'thing.getId()', ma ha restituito 'null'. – AlanH