Java GeneratedValue с нечетностью последовательности (allocSize = 1) - PullRequest
1 голос
/ 09 марта 2020

У меня есть рабочий код, но я не понимаю, почему он работает:

public class FeatureInstalled implements Serializable
{
    @Id
    @Column(name = "FEATURE_INSTALLED_ID")
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "FEATURE_INSTALLED_Sequence")
    @SequenceGenerator(name = "FEATURE_INSTALLED_Sequence", sequenceName = "FEATURE_INSTALLED_SEQ", allocationSize = 1)
    private Long featureInstalledId;

Получает FEATURE_INSTALLED_ID из последовательности и использует его для вставки записи.

У меня был следующий код без allocationSize, и, хотя он, казалось, использовал сгенерированные идентификаторы, он имел гораздо больший FEATURE_INSTALLED_IDs:

public class FeatureInstalled implements Serializable
{
    @Id
    @Column(name = "FEATURE_INSTALLED_ID")
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "id_Sequence")
    @SequenceGenerator(name = "id_Sequence", sequenceName = "FEATURE_INSTALLED_SEQ")
    private Long featureInstalledId;

Может кто-нибудь объяснить мне, почему он так странно работает без allocationSize и подтвердить, что это работает с ним? Btw. Также в FEATURE_INSTALLED-table определен триггер для FEATURE_INSTALLED_ID, который равен NULL.

1 Ответ

1 голос
/ 09 марта 2020

Атрибут allocationSize в аннотации @SequenceGenerator является необязательным, поэтому, если allocationSize отсутствует, @SequenceGenerator работает нормально со значением по умолчанию, равным 50. Таким образом, генератор последовательности увеличивает значения на 50.

Как упомянуто в документации, здесь , из @SequenceGenerator:

selectionSize

publi c abstract int allocSize (Необязательно) Величина, на которую увеличивается при выделении порядковых номеров из последовательности. По умолчанию: 50

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...