Używam powyższy kod do generowania ID:@SequenceGenerator z allocationSize> 1 generuje zduplikowane klucze podstawowe
@Id
@GeneratedValue(generator = "seqq")
@SequenceGenerator(name = "seqq", sequenceName = "seqq", allocationSize = 20, initialValue = 1)
public long getId() {
return id;
}
również zaktualizowaną persistence.xml:
<property name="hibernate.id.new_generator_mappings" value="true"/>
i aktualizowane DDL w bazie:
CREATE SEQUENCE seqq
INCREMENT 20
MINVALUE 1
MAXVALUE 9223372036854775807
START 9171
CACHE 1;
Dzięki temu atrybut allocSize = 20 jest taki sam jak wartość increment. Jednak dostaję arbitralne błędy, mówiąc, że zduplikowana wartość klucza narusza wyjątkowe ograniczenie "myobjects_pkey". Często ten błąd występuje po pierwszym zapisaniu wersji próbnej. Wygląda na to, że hibernacja próbuje przetrwać obiekt z tym samym identyfikatorem. Jednak START zapewnia, że wiersz jest wyższy niż jakikolwiek istniejący w identyfikatorze tabeli. Jak wyeliminować duplikat błędu ograniczenia?