2015-12-31 5 views
2

Я инициализацией Hibernate без XML чем-то вродеВключить спящий режим HiLo стратегии

org.hibernate.SessionFactory sessionFactory = 
    new org.hibernate.cfg.Configuration(). 
    .setProperty(...) 
    .setProperty(...) 
    ... 
    .buildSessionFactory(); 

Мои классы используют идентификатор как и

@Id @Generated(GenerationTime.INSERT) @GeneratedValue private Integer id; 

Генератор используется SequenceStyleGenerator, который, кажется, замена для устаревших SequenceGenerator и SequenceHiLoGenerator и любого другого. Он использует

public static final int DEFAULT_INCREMENT_SIZE = 1; 

и, кажется, позволяет конфигурации через

public static final String INCREMENT_PARAM = "increment_size"; 

, но это все, что я мог бы узнать. Я предполагаю, что мне нужно установить некоторое свойство «xxx.yyy.increment_size» или передать его другим способом в Hibernate, но я не вижу, как это сделать.


Я знаю @SequenceGenerator, но это, кажется, полностью игнорируется

+0

Значения по умолчанию, как всегда бесполезные, почему бы не использовать физическую последовательность, и вы также можете использовать автоматическое увеличение, если вы создаете триггер для вставки перед каждой строкой. –

ответ

3

Я предполагаю, что вы ищете, как установить increment_size свойство для SequenceSytleGenerator.

Пример фрагмент ниже настройки increment_size с помощью @GenericGenerator аннотации с hilo оптимизатором и SEQUENCE стратегии.

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "hilo_generator") 
@GenericGenerator(
     name = "hilo_generator", 
     strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator", 
     parameters = { 
       // Or leave it out to get "hibernate_sequence". 
       @Parameter(name = "sequence_name", value = "hilo_sequence"), 
       // Or leave it out as this is the default. 
       @Parameter(name = "initial_value", value = "1"), 
       @Parameter(name = "increment_size", value = "5"), 
       @Parameter(name = "optimizer", value = "hilo") 
     }) 

Там нет никакого способа, вы можете глобально установить DEFAULT_INCREMENT_SIZE со свойством конфигурации Hibernate. Вместо этого вам необходимо использовать свойства конфигурации @Id.

 Смежные вопросы

  • Нет связанных вопросов^_^