Мы используем SequenceGenerator, который использует последовательность нашей БД PostgreSQL.Мы знаем, что по умолчанию allocSize () равен 50.
Проблема в том, что мы переходим к генератору пользовательских последовательностей, который расширяет класс SequenceGenerator и переопределяет функцию generate ().Но кое-как, это не работает, и это каждый раз связывается с БД и не сохраняет буфер на сервере после умножения текущей последовательности на allocSize ().
Это текущий код генератора клиентской последовательности:
public class UseExistingOrGenerateIdGenerator extends SequenceGenerator {
@Override
public Serializable generate(SessionImplementor session, Object object)
throws HibernateException {
Serializable id = session.getEntityPersister(null, object)
.getClassMetadata().getIdentifier(object, session);
return id != null ? id : (super.generate(session, object));
}
}
В каком-то другом классе определен геттер:
@Id
@Column(name = "PrimaryID", nullable = false, precision = 38, scale = 0)
@GenericGenerator(name = "primaryIdSeq",
strategy = "com.data.generator.sequence.UseExistingOrGenerateIdGenerator",
parameters = {
@Parameter(name = "sequence", value = "Primary_id_SEQUENCE")
})
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "primaryIdSeq")
public BigDecimal getReturnId() {
return this.returnId;
}