Symfony2.1内に埋め込まれたドキュメントでMongoDBドキュメントをシリアル化しようとしています。私はJMSserializerとMongodb-odmバンドルを使用しています。
次のDocumentsエンティティがあります。
// Blog
namespace App\DocumentBundle\Document;
use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
use JMS\SerializerBundle\Annotation\Type;
/**
* @MongoDB\Document(repositoryClass="App\DocumentBundle\Repository\BlogRepository")
*/
class Blog {
/**
* @MongoDB\Id
*/
protected $id;
/**
* @MongoDB\String
* @Assert\NotBlank()
*/
protected $title;
/**
* @MongoDB\string
* @Assert\NotBlank()
*/
protected $blog;
/**
* @MongoDB\EmbedMany(targetDocument="Tag")
*/
private $tags;
/**
* @MongoDB\Timestamp
*/
protected $created;
/**
* @MongoDB\Timestamp
*/
protected $updated;
}
と
// Tag
namespace App\DocumentBundle\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
/**
* @MongoDB\EmbeddedDocument
*/
class Tag {
/**
* @MongoDB\String
*/
protected $name;
}
タグ属性に対してArrayCollectionタイプが生成されますが、JMSSerializerバンドルはそれを好みません。タグを@MongoDB\Stringに変更してブログドキュメントを再生成すると、シリアル化は発生しますが、@ MongoDB \ EmbedMany(targetDocument = "Tag")が設定されていません。
埋め込みドキュメントもシリアル化できるように、JMSSerializerの注釈付き属性の一部を指定する必要がありますか?