2015-02-22 16 views
5

Sto tentando di impostare la dimensione di allocazione e il valore iniziale di una sequenza utilizzando la strategia IDENTITY per PostgreSQL. Ciò non produce l'SQL che mi aspettavo, tuttavia la modifica della strategia a SEQUENCE funziona. È questo?Impossibile impostare sequenceGenerator quando la strategia del generatore è impostata su IDENTITY

id: 
    id: 
     type: integer 
     id: true 
     generator: 
      strategy: IDENTITY 
     sequenceGenerator: 
      sequenceName: table_id_seq 
      allocationSize: 10 
      initialValue: 100000 
+0

Credo allocationSize è irrilevante quando si utilizza l'identità come non ci sono richieste nextval() quando si inseriscono le righe. Tuttavia mi piacerebbe comunque impostare il valore della sequenza iniziale durante la creazione della tabella. – shapeshifter

risposta

4

Dottrina inizializza la strategia generatore di ID in Doctrine\ORM\Mapping\ClassMetadataFactory. C'è una grande switch dichiarazione nella fabbrica, la commutazione della <STRATEGY_NAME> fornite nella configurazione YAML:

generator: 
    strategy: <STRATEGY_NAME> 

La strategia selezionata recupera poi ulteriori parametri opzionali dalla configurazione.

Tutte le strategie disponibili sono elencate nello Doctrine Manual. Le opzioni per la strategia Sequence Generator sono dettagliate nello following subsection.

A giudicare dalla configurazione, si stanno attualmente impostando i parametri per la strategia Sequence Generator, mentre si dice a Doctrine di utilizzare la strategia Identifier. Forse questo è il comportamento imprevisto che stai vivendo?

Si può read the source code delle rispettive linee di fabbrica per chiarire le vostre aspettative.

3

Quindi, utilizzare solo con @GeneratedValue (strategia = "SEQUENCE").

Per l'utilizzo con @GeneratedValue (strategia = "SEQUENCE") questa annotazione consente di specificare dettagli sulla sequenza, ad esempio la dimensione di incremento e i valori iniziali della sequenza.

altro esempio doctrine documentation

config:

Message: 
    type: entity 
    id: 
    id: 
     type: integer 
     generator: 
     strategy: SEQUENCE 
     sequenceGenerator: 
     sequenceName: message_seq 
     allocationSize: 100 
     initialValue: 1 

Problemi correlati