Использование Hibernate allocSize в генераторе пользовательских последовательностей - PullRequest
0 голосов
/ 06 марта 2019

Мы используем 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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...