首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用hibernate HiLo序列生成

禁用hibernate HiLo序列生成
EN

Stack Overflow用户
提问于 2015-01-27 13:28:42
回答 1查看 2.4K关注 0票数 1

我正在使用Hibernate 4.2.x,我希望禁用HiLo序列生成--每次都转到DB (oracle)。我将这一行添加到persistance.xml中:

代码语言:javascript
复制
 <property name="hibernate.id.new_generator_mappings" value="true"/>

我的实体看起来是这样的

代码语言:javascript
复制
@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行为I,它们之间的距离很远。

查看了一些问题(例如这里这里 ),但没有发现任何有用的东西。更多的是,我无法找到配置使用哪个优化器的位置。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-27 13:59:24

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

请记住,当没有缓存序列时,OLAP性能可能会恶化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28171683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档