【发布时间】:2020-03-20 18:05:52
【问题描述】:
我正在使用自定义类来生成 id:
public class StringPrefixedSequenceIdGenerator extends SequenceStyleGenerator
在实体属性上也使用这个类:
@Id
@GenericGenerator(name = "pipeline_seq_generator", strategy = "com.model.StringPrefixedSequenceIdGenerator", parameters = {
@Parameter(name = StringPrefixedSequenceIdGenerator.INCREMENT_PARAM, value = "50") })
@GeneratedValue(generator = "pipeline_seq_generator", strategy = GenerationType.SEQUENCE)
@Column(name = "pipeline_id", unique = true, nullable = false, length = 100)
public String getPipelineId() {
return this.pipelineId;
}
问题是hibernate仍然尝试从数据库中获取序列:
从 pipeline_seq_generator 中选择 next_val 作为 id_val 进行更新
错误:java.sql.SQLSyntaxErrorException:表'table.pipeline_seq_generator'不存在
编辑:当我在我的方法中将 super.generate(session,object) 作为参数传递时,@Override 生成方法导致休眠从数据库调用序列:
@Override
public Serializable generate(SharedSessionContractImplementor session,
Object object) throws HibernateException {
return String.format(format, LocalDate.now(), super.generate(session, object));
}
【问题讨论】:
标签: spring-boot java-8 hibernate-5.x