TLDR;Doctrine2:我需要知道是否可以将 Embeddable 中的字段从父实体(或 MappedSuperclass')映射中创建为主键。我已经知道如何从 Embeddable 的映射中设置主键,但这并不理想(参见“长版本”)。
长版; 我正在尝试使用 Doctrine2 Embeddables 为我的实体创建身份值对象。
这是我的问题...
我在一个实体(MyEntity)中有两个不同的 Embeddables(MyEntityId 和 OtherEntityId)。
我希望 MyEntityId 中的一个字段成为 MyEntity 的主键。
由于我在同一个实体中有两个身份嵌入,我想在实体映射文件中定义主键字段,而不是可嵌入映射。
如果我从可嵌入对象中定义主键,当我想对 OtherEntityId 执行相同操作时会遇到问题(因为我在其他地方使用它)。
在 MyEntityId 和 OtherEntityId 中映射主键会导致 MyEntity 具有我不想要的复合键。
这是我目前的映射...
MyEntity:
embedded:
MyEntityId:
class: 'MyEntityId'
columnPrefix: false
OtherEntityId:
class: 'OtherEntityId'
columnPrefix: false
MyEntityId:
type: 'embeddable'
id:
id:
column: 'MyEntityId'
type: 'string'
OtherEntityId:
type: 'embeddable'
id:
id:
column: 'OtherEntityId'
type: 'string'
解决方案?
创建两个单独的 Embeddables 来表示相同的 Id 值对象(不是很干也不是太复杂)
从实体映射 Embeddable 的主键字段(这可能吗?我在文档中的任何地方都找不到它)