2015-02-22 12 views
5

Tôi đang cố đặt kích thước phân bổ và giá trị ban đầu của chuỗi bằng cách sử dụng chiến lược IDENTITY cho PostgreSQL. Điều này không tạo ra SQL mà tôi mong đợi, thay đổi chiến lược thành công việc SEQUENCE. Đây có phải là mục đích không?Không thể đặt trình tạo chuỗi khi chiến lược máy phát được đặt thành IDENTITY

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

Tôi tin allocationSize là không thích hợp khi sử dụng SẮC như không có() yêu cầu NEXTVAL khi chèn hàng. Tuy nhiên tôi vẫn muốn đặt giá trị chuỗi ban đầu khi tạo bảng. – shapeshifter

Trả lời

4

Học thuyết khởi tạo chiến lược trình tạo ID trong Doctrine\ORM\Mapping\ClassMetadataFactory. Có một switch tuyên bố lớn trong nhà máy, chuyển đổi các <STRATEGY_NAME> bạn cung cấp trong cấu hình YAML của bạn:

generator: 
    strategy: <STRATEGY_NAME> 

Chiến lược được lựa chọn sau đó lấy về các thông số thêm tùy chọn từ cấu hình của bạn.

Tất cả các chiến lược có sẵn được liệt kê trong Doctrine Manual. Các tùy chọn cho chiến lược Sequence Generator được mô tả chi tiết trong following subsection.

Đánh giá từ cấu hình của bạn, bạn hiện đang đặt thông số cho chiến lược Sequence Generator, trong khi yêu cầu Doctrine sử dụng chiến lược Identifier. Có lẽ đây là hành vi bất ngờ mà bạn đang gặp phải?

Bạn có thể read the source code các dòng nhà máy tương ứng để làm rõ mong đợi của bạn.

3

Vì vậy, chỉ sử dụng với @GeneratedValue (strategy = ”SEQUENCE”).

Để sử dụng với @GeneratedValue (strategy = "SEQUENCE") chú thích này cho phép chỉ định chi tiết về chuỗi, chẳng hạn như kích thước gia tăng và giá trị ban đầu của chuỗi.

khác ví dụ doctrine documentation

config:

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

Các vấn đề liên quan