Hibernate SequenceStyleGenerator忽略initial_value参数

时间:2015-02-04 15:47:38

标签: hibernate postgresql sequence liquibase

我正在开始一些新项目,并将使用postgresql而不是MySql(像往常一样)。

因此,我的AbstractEntity类ID字段现在配置了类似

的内容
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "dynamicIdGenerator")
@GenericGenerator(
        name =  "dynamicIdGenerator",
        strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator" ,
        parameters = {
                @Parameter(name = "prefer_sequence_per_entity", value = "true"),
                @Parameter(name = "sequence_per_entity_suffix", value = "_id_seq"),
                @Parameter(name = "initial_value", value = "100"),
                @Parameter(name = "increment_size", value = "1")
        })
protected Long id;

另外,我使用liquibase创建数据库表,例如:

<createTable tableName="audit_field_name">
        <column autoIncrement="true" name="id" type="BIGINT">
            <constraints nullable="false" primaryKey="true"/>
        </column> ...
    </createTable>

一切都很好,我有桌子audit_field_name并且相应  序列audit_field_name_id_sec,但此序列具有默认起始值​​:1。即config @Parameter(name = "initial_value", value = "100")  被忽略了,我有一些麻烦。

那么,是否有人知道如何使用SequenceStyleGenerator并确定initial_value param?

1 个答案:

答案 0 :(得分:0)

最后,我发现了错误。 Hibernate没有产生sequance(在我的情况下) - liquibase do。 liquibase用默认参数创建sequance,所以设置起始值的方法是改变sequance