Hibernate не генерирует идентификатор при использовании последовательности Oracle - PullRequest
3 голосов
/ 13 ноября 2009

У меня есть следующее отображение

@Entity
@SequenceGenerator(name="sacpSequenceGenerator", sequenceName="SACP_SEQ")
public class Sacp {

    private Integer id;


    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="sacpSequenceGenerator")
    public Integer getId() {
        return this.id;
    }

    // other setter's and getter's
}

Таблица SACP отображается в соответствии с

ID NUT NULL NUMBER(4) 

Когда я пытаюсь сохранить экземпляр Sacp, Hibernate жалуется

ORA-01438: для этого столбца допускается значение, превышающее указанную точность

Даже при использовании Long вместо Integer выдается та же ошибка

Что мне сделать, чтобы это исправить?

1 Ответ

1 голос
/ 13 ноября 2009

Я нашел это

SEQ_GEN определяет генератор последовательности, используя последовательность с именем my_sequence. Размер выделения, используемый для этого алгоритма hilo на основе последовательности, равен 20. Обратите внимание, что эта версия аннотаций Hibernate не обрабатывает initialValue в генераторе последовательностей. Размер выделения по умолчанию равен 50, поэтому, если вы хотите использовать последовательность и извлекать значение каждый раз, необходимо установить размер выделения равным 1.

А теперь работает нормально

...