有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java禁用hibernate HiLo序列生成

我正在使用Hibernate4.2。x和我想禁用HiLo序列生成-每次都转到DB(oracle)。 我将这一行添加到persistence中。xml:

 <property name="hibernate.id.new_generator_mappings" value="true"/>

我的实体如下所示:

@Entity
@Table(name = "MY_TABLE")
@SequenceGenerator(name = "generator", sequenceName = "MY_SEQ", initialValue = 1, allocationSize = 1)
public class MyEntity {

    private long id;

    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "generator")
    public Long getId()
    {
        return id;
    }
}

出于某种原因,我仍然会在远离彼此的地方创建HiLo行为ID

查看了一些问题(例如herehere),但没有发现任何有用的内容。更重要的是,我找不到在哪里配置要使用的Optimizer


共 (1) 个答案

  1. # 1 楼答案

    由于不太熟悉hibernate,我猜测它使用Oracle数据库序列作为源。Oracle序列的一个特性是序列缓存。如果设置了缓存大小(默认值=20),请检入序列的定义。我知道在数据库重新启动后,缓存会被清除,所以这就是丢失连续数字的时候。 使用以下命令修改序列: 更改序列MY_SEQ nocache

    请记住,如果不缓存序列,OLAP性能可能会恶化