我正在使用Hibernate 4.2.x,我希望禁用HiLo序列生成--每次都转到DB (oracle)。我将这一行添加到persistance.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行为I,它们之间的距离很远。
发布于 2015-01-27 13:59:24
由于对hibernate不太熟悉,我猜它使用的是Oracle数据库序列作为源。Oracle序列的一个特性是序列缓存。如果设置了缓存大小(默认值= 20),请检查序列的定义。我知道,在重新启动数据库之后,缓存无论如何都会被清除,所以这就是您丢失连续数字的时候。使用命令修改序列: MY_SEQ nocache;
请记住,当没有缓存序列时,OLAP性能可能会恶化。
https://stackoverflow.com/questions/28171683
复制相似问题