2

次のような方法で、XMLなしでHibernateを初期化しています

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

私のクラスは次のようなIDを使用します

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

使用されているジェネレーターは でありSequenceStyleGenerator、これは非推奨のSequenceGeneratorandなどの代わりになるSequenceHiLoGeneratorようです。それは使用しています

public static final int DEFAULT_INCREMENT_SIZE = 1;

経由で構成を許可しているようです

public static final String INCREMENT_PARAM = "increment_size";

しかし、それは私が見つけることができたすべてです。プロパティ「xxx.yyy.increment_size」を設定するか、別の方法で Hibernate に渡す必要があると思いますが、方法がわかりません。


は承知しているが@SequenceGenerator、完全に無視されているようだ

4

2 に答える 2

3

increment_sizeのプロパティを設定する方法を探していると思いますSequenceSytleGenerator

オプティマイザーと戦略でアノテーションをincrement_size使用した設定の下のサンプル スニペット。@GenericGeneratorhiloSEQUENCE

@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_SIZEHibernate 構成プロパティを使用してグローバルに設定する方法はありません。@Id代わりに構成プロパティを使用する必要があります。

于 2016-01-03T07:33:59.103 に答える