Я определил сущность так:
public class Chair {
@GenericGenerator(name = "sequencePerEntityGenerator", strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator", parameters = {
@Parameter(name = "prefer_sequence_per_entity", value = "true"),
@Parameter(name = "sequence_per_entity_suffix", value = "_seq"),
@Parameter(name = "initial_value", value = "5000000"),
@Parameter(name = SequenceStyleGenerator.INCREMENT_PARAM, value = "1") })
@GeneratedValue(strategy = GenerationType.AUTO, generator = "sequencePerEntityGenerator")
@Id
int id;
Но я хотел бы знать, каковы имена созданных последовательностей (используя Chair.class), и извлечь названия / использовать диалект, чтобы создать свой собственный вызов nextval, и запросить новый идентификатор без какого-либо .persist () звонок сделан. Это возможно? Если да, то как? Если нет, то как?
Моя конечная цель - запросить несколько идентификаторов (до миллионов), используя один оператор SQL, как указано в в этом вопросе stackoverflow, в существующем приложении. (Другие варианты того же в MySQL, Postgres существуют как отдельные ответы на другие вопросы)
PS: Можно порекомендовать использовать PooledOptimizer или HiLo Optimizer или любые оптимизаторы на стороне клиента, уже предоставленные hibernate, для оптимизации генерации идентификаторов, но с учетом большой нагрузки, которую мое приложение вызывает из-за других процессов, он не может выделить достаточно времени ЦП для оптимизаторов последовательности, и синхронизированные методы генерации этих оптимизаторов блокируют потоки (асинхронное постоянство). Кстати, с использованием оптимизаторов замедляет многопоточные постоянные вызовы для одного и того же класса Entity и медленнее, чем NoopOptimizer (без оптимизатора).