2014-10-27 2 views
7

Sto cercando una soluzione per salvare un oggetto con un dbref null nel framework mongodb java spring. Si consideri il seguente esempio:Come salvare un oggetto con dbref null in mongodb java spring?

@Document 
public class A { 
    @Id 
    private String id; 
    @DBRef 
    private B b; 

    public A() { 
     this.b = null; 
    } 

    ... 
} 

@Document 
public class B { 
    @Id 
    private String id; 
} 

Ora, se un'istanza di un, vale a dire A a = new A(); e salvare questo oggetto per MongoDB tramite repository, vale a dire aRepo.save(a). Quindi, ho la seguente eccezione:

org.springframework.data.mapping.model.MappingException: Cannot create a reference to an object with a NULL id. 

C'è un modo per salvare un oggetto con un dbref null?

Grazie per il vostro aiuto!

+0

In generale l'errore ti riferisci si verifica ogni volta che si tenta di salvare un ente che punti a un riferimento (non 'nullo') uno che non è stato ancora salvato o non ha un set' id'. Dato il codice sopra non riesco a riprodurre il problema - quindi sono curioso di quale versione di 'spring-data-mongodb' stai usando? –

+0

Infatti, ho controllato i sorgenti e c'è un controllo come id == null? lanciare un'eccezione La mia versione è 1.6.0.RELEASE awesome

+0

Hey! Ho lo stesso problema. Hai trovato qualche soluzione? – gabby

risposta

0

Come variante è possibile creare NullObject come:

public final static B NULL_B = new B(""); 

e utilizzarlo al posto di null

public A() { 
    this.b = NULL_B; 
} 
+0

E i dati di primavera aggiungono solo un documento vuoto alla raccolta B per tutto il metodo di chiamata save() con NullObject – bald2b