Recentemente resolvi este problema para o meu projeto. Eu uso o gerador de sequência aprimorado (que é o padrão para geradores de estilo de sequência) e defino o
prefer_sequence_per_entity
parâmetro para true
. Conteúdo do meu
package-info.java
:@GenericGenerator(
name = "optimized-sequence",
strategy = "enhanced-sequence",
parameters = {
@Parameter(name="prefer_sequence_per_entity", value="true"),
@Parameter(name="optimizer", value="hilo"),
@Parameter(name="increment_size", value="50")})
package org.example.model;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
No lado do uso, você só precisa
@Id @GeneratedValue(generator="optimized-sequence")
public long id;
Prefiro ter sequências separadas porque ocasionalmente derrubo uma tabela e a recrio, e quero que os IDs comecem de um.