2017-02-23 10 views
0

Doctrine ODMには、コレクションに使用する名前を指定するアノテーション(コレクション)があります。デフォルトではクラス名ですが、簡単に変更できます。Doctrine ODM - MappedSuperclassのコレクション名を指定する

しかし、他のクラスによって拡張されたスーパークラスはマップされています。継承型は単一のコレクションであり、このコレクションには基本抽象クラスの名前が付けられます。この名前を変更するにはどうすればよいですか?

私はクラスBaseを持っているとしましょう、それは拡張されます。しかし、私はそのコレクションをItemsという名前にしたい。私は明らかに、すべての拡張クラスでアノテーションを変更したくないのは、それはかなり冗長でエラーが発生しやすいからです。

答えて

1

documentation

に述べたように、Aは、スーパークラスが文書ことができず、照会不可能れるマッピングされました。

したがって、どのコレクションにもマッピングすることはできません。 @Document@InheritanceTypeの注釈が指定されているクラスが必要です。追加の文書が拡張される(クラスはabstractになります)。マップされたスーパークラスの間に配置するか、代わりにマップすることができます。また、@Documentマップされたクラスを持つことで、具体的なクラスを戻しながら問い合わせることができます。

+0

ありがとうございました。私はMappedSuperclassのポイントを逃した。私はどういうわけか、いつも抽象クラスのエイリアスだと思っていて、抽象クラスであるすべてのクラスはMappedSuperclassでなければなりません。マップされたスーパークラスをドキュメントに変更する(そして抽象的に維持する)ことで、私の問題が解決されました。 –

関連する問題