我的DB结构如下:
工作:
- CTI表工作
- 映射superclass表 AbstractImagework 扩展了工作
- 最终表 photOwork 扩展了 AbstractImagework
评论:
- 映射的SuperClass表注释
- 最终表工作收费扩展注释
WorkComment 与工作有很多关系:
@ManyToOne(targetEntity="Work", inversedBy="comments")
工作与 WorkComment 有一个oneTomany关系:
@OneToMany(targetEntity="WorkComment", mappedBy="work")
问题是,学说在更新架构时给了我这个错误:
[DoctrineORMMappingMappingException]
It is illegal to put an inverse side one-to-many or many-to-many association on
mapped superclass 'Acme...AbstractImageWork#comments'.
我想这与映射的superclass AbstractImagework 粘在工作和 photoWork 之间,但我实际上没有真正没有将此关系放在映射的supperclass上,但是在CTI表上。
有什么想法?
在某些情况下,当您从标记为 @ORMMappedSuperclass
的类中继承时会出现此类错误时,请尝试将您的属性访问级别从 private 更改为受保护
映射的超类不能是一个实体,它不可查询,并且由映射的超类定义的持久关系必须是单向的(仅具有拥有的一侧)。这意味着在映射的超级类别上根本无法进行一对多的关联。此外,只有在当时仅在一个实体中使用映射的超级类别,才有可能多对多的关联。为了进一步支持继承,必须使用单个或连接的表继承功能。
在此处查看:https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/inheritance-mapping.html
在其他情况下,当您在抽象上级类别中声明@ORMEntity
而不是@ORMMappedSuperclass