我正在尝试使用PostgreSQL的IDENTITY策略设置序列的分配大小和初始值。这不会产生我预期的SQL,但是将策略更改为SEQUENCE可行。这是为了吗?
id:
id:
type: integer
id: true
generator:
strategy: IDENTITY
sequenceGenerator:
sequenceName: table_id_seq
allocationSize: 10
initialValue: 100000
答案 0 :(得分:4)
Doctrine初始化Doctrine\ORM\Mapping\ClassMetadataFactory
中的ID生成器策略。工厂中有一个很大的switch
语句,切换您在YAML配置中提供的<STRATEGY_NAME>
:
generator:
strategy: <STRATEGY_NAME>
然后,所选策略将从您的配置中获取更多可选参数。
所有可用的策略都列在Doctrine Manual中。 Sequence Generator
战略的选项详见following subsection。
根据您的配置判断,您当前正在设置Sequence Generator
策略的参数,同时告诉Doctrine使用Identifier
策略。也许这是您遇到的意外行为?
您可以read the source code 各自的工厂生产线来澄清您的期望。
答案 1 :(得分:3)
因此,只能使用@GeneratedValue(strategy =“SEQUENCE”)。
与@GeneratedValue(strategy =“SEQUENCE”)一起使用时,此注释允许指定序列的详细信息,例如序列的增量大小和初始值。
配置示例:
Message:
type: entity
id:
id:
type: integer
generator:
strategy: SEQUENCE
sequenceGenerator:
sequenceName: message_seq
allocationSize: 100
initialValue: 1