【发布时间】:2013-09-12 14:07:42
【问题描述】:
我有一个实体的复合主键是另一个实体的主键的一部分的特定情况。这是专业化的情况,但现在没关系。
我使用Doctrine从数据库生成实体,但是Doctrine不支持复合外键作为主键:
It is not possible to map entity 'XXXXX' with a composite primary key as part of the primary key of another entity 'YYYYYY#id_xxxxx'
有人知道这种情况的解决方案吗?可以是Doctrine解决方案,也可以是编辑模型和数据库结构。
更新 1
CREATE TABLE `amandman` (
`iddokumenta` int(11) NOT NULL,
`datumdostavljanjaskupstini` date NOT NULL,
`tekst` text,
`datumizmene` date DEFAULT NULL,
`izmenjenitekst` text,
`iddokumentapredlogazakona` int(11) DEFAULT NULL,
`datumdostavljanjaskupstinipredlogazakona` date DEFAULT NULL,
PRIMARY KEY (`iddokumenta`,`datumdostavljanjaskupstini`),
KEY `iddokumentapredlogazakona_idx` (`iddokumentapredlogazakona`,`datumdostavljanjaskupstinipredlogazakona`),
CONSTRAINT `iddokumenta45` FOREIGN KEY (`iddokumenta`, `datumdostavljanjaskupstini`) REFERENCES `dokument` (`iddokument`, `datumdostavljanjaskupstini`) ON DELETE NO ACTION ON UPDATE CASCADE,
CONSTRAINT `iddokumentapredlogazakona` FOREIGN KEY (`iddokumentapredlogazakona`, `datumdostavljanjaskupstinipredlogazakona`) REFERENCES `predlogzakona` (`iddokumenta`, `datumdostavljanjaskupstini`) ON DELETE NO ACTION ON UPDATE CASCADE)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
这是 Doctrine 无法生成的数据库中的实体之一。
【问题讨论】:
-
你所说的“复合”是什么意思?您只是将两个键串在一起还是创建了一个跨越两列的主键?
-
能否复制问题中的实体?
-
很抱歉回复晚了。复合是指主键跨越两列。
标签: orm doctrine-orm composite-primary-key