Я использую собственный класс для генерации идентификатора:
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 все еще пытается получить последовательность из базы данных: выберите next_val в качестве id_val из pipe_seq_generator для обновления
Ошибка: java. sql .SQLSyntaxErrorException: таблица 'table.pipeline_seq_generator' не существует
РЕДАКТИРОВАТЬ: Метод генерирования @Override вызывает hibernate для вызова последовательности из базы данных, когда я передаю super.generate (сеанс, объект) в качестве параметра в моем методе:
@Override
public Serializable generate(SharedSessionContractImplementor session,
Object object) throws HibernateException {
return String.format(format, LocalDate.now(), super.generate(session, object));
}