我正在开始一些新项目,并将使用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?
答案 0 :(得分:0)
最后,我发现了错误。 Hibernate没有产生sequance(在我的情况下) - liquibase do。 liquibase用默认参数创建sequance,所以设置起始值的方法是改变sequance