2015-02-22 14 views
5

PostgreSQL için IDENTITY stratejisini kullanarak bir dizinin ayırma boyutunu ve başlangıç ​​değerini ayarlamaya çalışıyorum. Bu, beklediğim SQL'i üretmiyor, ancak stratejiyi SEQUENCE'a göre değiştiriyor. Bu amaçlanmış mı?Jeneratör stratejisi IDENTITY olarak ayarlandığında sequenceGenerator ayarlanamıyor

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

. Yine de, tabloyu oluştururken başlangıç ​​dizisi değerini ayarlamak istiyorum. – shapeshifter

cevap

4

doktrini Doctrine\ORM\Mapping\ClassMetadataFactory ID jeneratör stratejisi başlatır. Fabrikada büyük switch açıklamada anahtarlama vardır <STRATEGY_NAME> Eğer YAML yapılandırmasında sağlar:

generator: 
    strategy: <STRATEGY_NAME> 

seçilen strateji ardından yapılandırmasından daha da isteğe bağlı parametreleri getirir.

Kullanılabilir tüm stratejiler Doctrine Manual numaralı belgede listelenmiştir. Sequence Generator stratejisi için seçenekler following subsection'da ayrıntılandırılmıştır.

Yapılandırmanızdan yola çıkarak, şu anda stratejisi için parametreler ayarlıyorsunuz, bu sırada Doctrine'e Identifier stratejisini kullanmasını söylüyorsunuz. Belki bu deneyimlediğiniz beklenmedik davranış?

Beklentilerinizi netleştirmek için ilgili fabrika hatlarının read the source code numaralı bilgilerini kullanabilirsiniz.

3

Bu nedenle, yalnızca @GeneratedValue (strategy = ”SEQUENCE”) ile kullanın. @GeneratedValue ile kullanım için

(strateji =”dizisi”), bu açıklama bu artış boyutu ve dizinin başlangıç ​​değerleri olarak sekans ilgili ayrıntıları belirtmek için izin verir.

diğer doctrine documentation

yapılandırma örnek: satırları takarken bir nextval() istek olarak orada KİMLİK kullanıldığında allocationSize ilgisiz olduğuna inanıyoruz

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