2017-02-23 4 views
0

Doctrine ODM hat Annotation (Sammlung), um anzugeben, welcher Name für die Sammlung verwendet werden soll. Es ist standardmäßig Klassenname, kann aber leicht geändert werden.Doctrine ODM - Sammlungsname für MappedSuperclass angeben

Allerdings habe ich Superklasse zugeordnet, die von anderen Klassen erweitert wird. Der Vererbungstyp ist eine einzelne Auflistung, und diese Auflistung wird nach der abstrakten Basisklasse benannt. Wie kann ich diesen Namen ändern?

Sagen wir, ich habe die Klasse Base, die erweitert wird. Aber ich möchte, dass die Sammlung Items heißt. Ich möchte natürlich keine Annotationen in allen Erweiterungsklassen ändern, da es ziemlich redundant und fehleranfällig ist.

Antwort

1

Wie in der documentation angegeben

A abgebildet geordnete Klasse kann kein Dokument sein und abfragbare nicht.

daher kann es keiner Sammlung zugeordnet werden. Sie müssen eine Klasse mit @Document und @InheritanceType Annotationen haben, aus denen weitere Dokumente erweitert werden (die Klasse kann abstract sein). Du kannst es entweder zwischen deine zugeordnete Superklasse einfügen oder es stattdessen haben. Auch dank einer @Document gemappten Klasse können Sie sie abfragen, während Sie konkrete Klassen zurück haben.

+0

Danke. Ich habe den Punkt von MappedSuperclass verpasst. Ich dachte irgendwie immer, dass es ein Alias ​​für Abstrakt ist und jede Klasse, die abstrakt ist, sollte MappedSuperclass sein. Ändern der zugeordneten Superklasse in Dokument (und halten es abstrakt) löste mein Problem. –

Verwandte Themen