Mi piacerebbe avere la seguente gerarchia in Doctrine2:CTI multipla (ereditarietà delle tabelle di classe) tra le classi in Doctrine 2?
- Message
- SMS
- SentSMS
- ScheduledSMS
- FailedSMS
- Newsletter
- SystemComunication
ma quando provo a generare entità in Symfony 2 ottengo il seguente errore:
[Doctrine\ORM\Mappin\MappingException]
Entity 'Acme\HelloBundle\Entity\FailedSMS' has a composite identifier but uses an ID generator other than manually assigning (Identity, Sequence). This is not supported.
Penso che sia perché id
di FailedSMS
(ereditato da Message
) è in conflitto con il fatto che allo stesso FailedSMS
deve essere assegnato un id
per consentire a CTI (con SMS
) di funzionare.
Chiedo la luna o c'è un modo per farlo funzionare? Una piccola panoramica della gerarchia:
/**
* @ORM\Entity
* @ORM\Table(name="message")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="type", type="string")
* @ORM\DiscriminatorMap({"newsletter" = "Newsletter", "sms" = "SMS"})
*/
class Message {}
/**
* @ORM\Entity
* @ORM\Table(name="newsletter")
*/
class Newsletter extends Message {}
/**
* @ORM\Entity
* @ORM\Table(name="sms")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="status", type="string")
* @ORM\DiscriminatorMap({"sent"="SentSMS", "scheduled"="ScheduledSMS",
* "failed"="FailedSMS"
* })
*/
class SMS extends Message {}
/**
* @ORM\Entity
* @ORM\Table(name="failed_sms")
*/
class FailedSMS extends SMS {}
Grazie. Le superclassi mappate sembrano soddisfacenti perché non ho davvero bisogno di usare l'entità Messaggio. Ho intenzione di testarlo. – gremo