Spring MongoDB: Attribut in der Superklasse und @Indexed erst in der Subklasse

Schuriko

Bekanntes Mitglied
Hi Leute,

ich habe momentan folgendes Problem:

ich habe eine Superklasse (hier symbolisch dargestellt):
Code:
class MySuperClass {
    private String name;
    ...
}

und ich habe hiervon abgeleitet eine Subklasse (hier symbolisch dargestellt)
Code:
    @document(collection="abc")
class MySubClass extends MySuperClass {

    @Indexed
    private String name;
    ...
}

Die Subklasse dient als Entity zum speichern in eine MongoDB. Beide Klassen haben das Attribut "name", wobei sie in der Datenbank indiziert sein soll.
Schreibe ich es so wie folgt oben dargestellt, dann wird mir bereits in meiner Eclipse gesagt:
The annotation @indexed is disallowed at this location

Füge ich das Index allerdings der in der Superklasse ein wird mir das gleiche gesagt. Wie löse ich dieses Problem?
 
Ist das richtige Indexed importiert?

Und in beiden Klassen das Selbe private Attribut zu haben macht mMn nicht besonders viel Sinn
 
Ist das richtige Indexed importiert?

Und in beiden Klassen das Selbe private Attribut zu haben macht mMn nicht besonders viel Sinn
okay wie würdest du dann folgendes lösen
Code:
   ClassA {
         string name;

         ....
   }

  @document(collection="collectionB")
   ClassB extends ClassA{

          @indexed
         string name;
   }

  @document(collection="collectionC")
   ClassC {
            ClassA classA;
   }
Die Superklasse beinhaltet Wert die in ClassB und ClassC verwendet werden. Bei ClassB ist der Wert allerdings indiziert für eine Suche. In ClassC ist sie nicht indiziert, sondern dient einfach zur Aufnahme von Werten.
 
Entweder auf die Vererbung verzichten oder den zusätzlichen Index "in Kauf nehmen".

Das Attribut zusätzlich in der Unterklasse deklarieren ist zumindest Unsinn und macht vermutlich auch nicht das, was du erwartest.
 

Zurück
Oben