2014-10-27 4 views
7

Ich suche nach einer Lösung, um ein Objekt mit einem Null-dbref im mongodb Java-Framework zu speichern. Betrachten Sie das folgende Beispiel:Wie speichere ich ein Objekt mit null dbref 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; 
} 

Nun, wenn ich eine instanziiert, das heißt A a = new A(); und dieses Objekt speichern über Repository MongoDB, das heißt aRepo.save(a). Dann habe ich die folgende Ausnahme:

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

Gibt es eine Möglichkeit, ein Objekt mit einem Null dbref zu speichern?

Danke für Ihre Hilfe!

+0

Allgemein gesprochen der Fehler Sie sich beziehen tritt auf, wenn Sie versuchen, eine Entität zu speichern, dass die Punkte zu einem referenzierten (nicht "null"), der noch nicht gespeichert wurde oder kein 'id'-Set hat. Angesichts des obigen Codes kann ich das Problem nicht reproduzieren - also bin ich gespannt, welche Version von 'spring-data-mongodb' benutzt du? –

+0

Tatsächlich überprüfte ich die Quellen und es gibt eine Überprüfung wie ID == null? Ausnahme auslösen. Meine Version ist 1.6.0.RELEASE awesome

+0

Hey! Ich habe das gleiche Problem. Hast du irgendeine Lösung gefunden? – gabby

Antwort

0

Als Variante können Sie NullObject wie erstellen:

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

und verwenden Sie es anstelle von null

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

Und Feder-Daten fügen nur ein leeres Dokument zur B-Sammlung für alle Aufruf von save() -Methode mit NullObject – bald2b

Verwandte Themen