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
查看了一些问题(例如here和here),但没有发现任何有用的内容。更重要的是,我找不到在哪里配置要使用的Optimizer
# 1 楼答案
由于不太熟悉hibernate,我猜测它使用Oracle数据库序列作为源。Oracle序列的一个特性是序列缓存。如果设置了缓存大小(默认值=20),请检入序列的定义。我知道在数据库重新启动后,缓存会被清除,所以这就是丢失连续数字的时候。 使用以下命令修改序列: 更改序列MY_SEQ nocache
请记住,如果不缓存序列,OLAP性能可能会恶化