[DDC-2370] Subclass annotations not being read, unable to use OneToMany relation with single table inheritance Created: 26/Mar/13 Updated: 01/May/13 Resolved: 01/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | 2.3.2 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Arthur Bodera | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | annotationdriver, inheritance, orm | ||
| Environment: |
PHP 5.4.11 |
||
| Description |
|
Subclasses that override parent class properties and define relations will not work as expected, because AnnotationDriver/Reader will only use the parent class annotation (discarding whatever subclass defined). The following code will produce error: [Mapping] FAIL - The entity-class 'Test\Office' mapping is invalid: * The mappings Test\Office#employees and Employee#office are incosistent with each other. Test code:
<?php
namespace Test;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
*/
class Office
{
/**
* @ORM\OneToMany(targetEntity="Person", mappedBy="office")
* @var Person[]|ArrayCollection
*/
protected $people;
/**
* @ORM\OneToMany(targetEntity="Employee", mappedBy="office")
* @var Employee[]|ArrayCollection
*/
protected $employees;
}
/**
* @ORM\Entity
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="type", type="string")
* @ORM\DiscriminatorMap({"employee" = "Employee"})
*/
class Person
{
/**
* @ORM\ManyToOne(targetEntity="Office", inversedBy="people")
* @var Office
*/
protected $office;
}
/**
* @ORM\Entity
*/
class Employee extends Person
{
/**
* @ORM\ManyToOne(targetEntity="Office", inversedBy="employees")
* @var Office
*/
protected $office;
}
|
| Comments |
| Comment by Benjamin Eberlei [ 01/May/13 ] |
|
Overwriting assocations in this way is not supported. |
| Comment by Arthur Bodera [ 01/May/13 ] |
|
Ok, I get that it's not supported right now, but why did you mark it as resolved? |