Spring Data MongoDb für die Klassenvererbung

Möchte ich zum speichern verschiedener Daten, um eine Sammlung in MongoDb und Spring data Bohnen mit dem entsprechenden Feld..

Sorry, hab ich übersprungen details.

Übergeordneten bean:

class A
    int a

Childs:

class B extends A
    double b

class C extends A
    String c

Also, es gibt folgende Dokument in mongo

{a : 1, b : 2.3, c : "Test"}

Wenn ich Daten abrufen, ist es ok. Aber, wenn ich rufe speichern Methode von CrudRepository für B, es überschreibt alle Daten und ich verliere C.

Ich kenne nur eine gute option, um benutzerdefinierte Methode speichern mit inkrementellen updates, wie

update.set("b", newvalue)...

aber mit Reflexion.

Haben Sie andere Ideen?

Vielen Dank im Voraus.

  • Würden Sie bitte ein wenig Ausführlicher auf die Interaktion mit MongoTemplate und Ihr repository? Lesen Sie die Daten zurück in ein Objekt B? Das sollte bei der tatsächlichen Rückgabe ein Objekt vom Typ C wie wir feststellen sollten die gespeicherten Informationen. Darüber hinaus ist das collection-mapping-Informationen wäre hilfreich. Stellen Sie sicher, dass alle Klassen zugeordnet, die die gleiche Sammlung.
  • Hallo Oliver, danke für deine Antwort. Ja, ich habe überschreiben 'speichern' Methode 'MongoTemplate' update-Abfrage. Wenn ich jetzt speichern', B', aktualisiert er nur die " B " - Felder. Aber ich versuche zu finden, mehr awesome Lösung...
  • Wenn Sie hinzufügen der entsprechenden code-Schnipsel könnten wir Tauchen in das Thema ein bisschen mehr 🙂
  • Hallo Oliver, sorry für die Verspätung der Antwort. Es ist unsere Lösung: gist.github.com/1631780
  • vielen Dank für all die harte Arbeit! 1.0.1.RELEASE behoben viele Problem für mich
Schreibe einen Kommentar