[DDC-1579] MappedSuperClass and inheritance problem with console generate:entities command Created: 05/Jan/12  Updated: 10/Dec/12  Resolved: 09/Jan/12

Status: Resolved
Project: Doctrine 2 - ORM
Component/s: Tools
Affects Version/s: 2.1.5
Fix Version/s: 2.3
Security Level: All

Type: Bug Priority: Minor
Reporter: Sergio Moya Assignee: Benjamin Eberlei
Resolution: Duplicate Votes: 0
Labels: None
Environment:

Debian 6.0.3 - Linux 2.6.32-5-amd64

Symfony2 2.0.8 + Doctrine2 2.1.5


Issue Links:
Dependency
depends on DDC-1590 Fix Inheritance in Code-Generation Resolved

 Description   

I have two classes.

One extends from another. I'm using the annotation @MappedSuperclass
and operates correctly, but when he did the entities generation
through the command console, doctrine adds the property and the
methods of the "father" class in the subclass.

This is a bug of the command console?

Really you should not copy them if you do not extend them. When you
run the update of the database schema, i must delete these fields and
methods added to obtain the desired result.

What happens?

Im usign Symfony 2.

Thanks!!!!

Code:

Father class:

/********************************************************************

/**

  • @ORM\MappedSuperclass
    */
    abstract class ConfigBase
    {

/**

  • @ORM\Column(name="enabled", type="boolean")
    */
    protected $enabled;

/**

  • Set enabled
    *
  • @param boolean $enabled
    */
    public function setEnabled($enabled) { $this->enabled = $enabled; }

    /**
    * Get enabled
    *
    * @return boolean
    */
    public function getEnabled()
    { return $this->enabled; }

    }

    /********************************************************************

    SubClass

    /********************************************************************

    /**
    * @ORM\Entity
    *
    */
    class UserConfig extends ConfigBase
    {
    /**
    * @var integer $id
    *
    * @ORM\Column(name="id", type="integer")
    * @ORM\Id
    * @ORM\GeneratedValue(strategy="AUTO")
    */
    protected $id;

    /**
    * Get id
    *
    * @return integer
    */
    public function getId()
    { return $this->id; }

    /************************************************/
    /* Auto generated and non desired values */
    /************************************************/
    /**
    * @var boolean $enabled
    */
    private $enabled;

    /**
    * Set enabled
    *
    * @param boolean $enabled
    */
    public function setEnabled($enabled)
    { $this->enabled = $enabled; }

/**

  • Get enabled
    *
  • @return boolean
    */
    public function getEnabled() { return $this->enabled; }


 Comments   
Comment by Benjamin Eberlei [ 09/Jan/12 ]

It is a known problem that will be fixed in 2.3 hopefully.

Comment by Johan Hendrik Ehlers [ 03/Jul/12 ]

I just noticed that this is only an issue if the member has a protected scope in the mapped super class, it works fine for private members.

Comment by Lukas Domnick [ 10/Dec/12 ]

As of Doctrine 2.3.0, Symfony 2.1.3, this behaviour is still reproducable.
Mr. Ehlers is correct; generation will work correctly when the super class' properties are set to private scope. However, in that case the Proxy Object's lazy loading can't set the properties in question.

Generated at Fri Nov 28 00:31:26 UTC 2014 using JIRA 6.2.3#6260-sha1:63ef1d6dac3f4f4d7db4c1effd405ba38ccdc558.