一尘不染

如何启用Hibernate HiLo实体标识符优化器策略

hibernate

我正在通过类似的东西初始化没有任何XML的Hibernate

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

我的班级使用的ID如

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

所用的发电机SequenceStyleGenerator,这似乎是更换为过时SequenceGeneratorSequenceHiLoGenerator和什么。它用

public static final int DEFAULT_INCREMENT_SIZE = 1;

并且似乎允许通过配置

public static final String INCREMENT_PARAM = "increment_size";

但这就是我所能找到的全部。我想我必须设置一些属性“
xxx.yyy.increment_size”或以其他方式将其传递给Hibernate,但是我看不到如何做。


我知道@SequenceGenerator,但似乎被完全忽略了


阅读 364

收藏
2020-06-20

共1个答案

一尘不染

我想您正在寻找如何为设置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配置属性。

2020-06-20