Doctrine2: OneToMany on mapped superclass
class-table-inheritance, doctrine-orm, mappedsuperclass, relationship
Solution
In some cases, when you have such error when inherit from the class that is tagged as `@ORM\MappedSuperclass`, try to change your properties access level from private to protected
Problem
My DB structure is as follows: work: - CTI table Work - MappedSuperclass table AbstractImageWork which extends Work - final table PhotoWork which extends AbstractImageWork comment: - MappedSuperclass table Comment - final table WorkComment which extends Comment WorkComment has a ManyToOne relation to Work: ``` @ManyToOne(targetEntity="Work", inversedBy="comments") ``` Work has a OneToMany relation to WorkComment: ``` @OneToMany(targetEntity="WorkComment", mappedBy="work") ``` The problem is that Doctrine gives me this error while updating the schema: ``` [Doctrine\ORM\Mapping\MappingException] It is illegal to put an inverse side one-to-many or many-to-many association on mapped superclass 'Acme\...\AbstractImageWork#comments'. ``` I guess this has something to do with the MappedSuperclass AbstractImageWork stuck in the middle between Work and PhotoWork, but I didn't actually put this relation on the MappedSuperclass, but on the CTI table.. so why will Doctrine behave like this? Any ideas?