我正在开发一个继承抽象类的应用程序。这些抽象类有自己的序列化器映射,如下面的示例所示
Hezten\CoreBundle\Model\Enroled:
    exclusion_policy: ALL
和抽象类:
<?php
namespace Hezten\CoreBundle\Model;
abstract class Enroled implements EnroledInterface
{
    protected $student;
    protected $subject;
    //Some functions...
}
继承前一个类的类如下所示
<?php
namespace XXX\XXXBundle\Entity;
use JMS\Serializer\Annotation\SerializedName;
use JMS\Serializer\Annotation\ExclusionPolicy;
use JMS\Serializer\Annotation\Exclude;
use Doctrine\ORM\Mapping as ORM;
use Hezten\CoreBundle\Model\Enroled as BaseEnroled;
/** 
 * @ORM\Entity 
 * @ExclusionPolicy("NONE")
 */
class Enroled extends BaseEnroled
{
    /** @ORM\Id  
     *  @ORM\ManyToOne(targetEntity="XXX\XXXBundle\Entity\Student", inversedBy="enroled")
     * @Exclude
     */
    protected $student;
    /** @ORM\Id  
     *  @ORM\ManyToOne(targetEntity="XXX\XXXBundle\Entity\Subject", inversedBy="enroled")
     *  @Exclude
     */
    protected $subject;
    /** @ORM\Column(type="boolean") */
    private $field0;
    /** @ORM\Column(type="boolean") 
     */
    private $field1;
    /** @ORM\Column(type="boolean") */
    private $field2;
 }
抛出的错误是这样说的:
Warning: json_encode() [<a href='function.json-encode'>function.json-encode</a>]: recursion detected in C:\xampp\htdocs\Project\vendor\jms\serializer\src\JMS\Serializer\JsonSerializationVisitor.php line 29
当然,我做错了什么,因为没有暴露实体,根据映射只有三个“已注册”实体字段,但我不知道。我花了几天时间试图弄清楚没有成功的错误是什么。
进行继承属性映射的正确方法是什么?
更新
用于使用 FOSRestBundle 序列化 JSON 的代码:
    $students = $this->get('hezten_core.manager.enroled')->findEnroledBySubject($subject);
    $view = View::create()
    ->setStatusCode(200)
    ->setFormat('json')
    ->setData($students);
    return $this->get('fos_rest.view_handler')->handle($view);