Hiberate JPA - 插入记录时序列变为负数

时间:2017-09-15 01:53:54

标签: hibernate jpa jpa-2.0 hibernate-mapping hibernate-jpa

环境:

Database - Oracle 12c
Hibernate - 5.2.10Final 
JPA - version 2.0

我们正在使用entityManager.merge来插入对象。序列的值是正值但是当插入db时,它变为负值。似乎无法找到原因。

这是我们实体对象id属性字段的hibernate设置,序列设置为

@Id
@SequenceGenerator(name = "someSequence", sequenceName = "SOME_SEQUENCE")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "someSequence")
@Column(name = "RECORD_ID", unique = true, nullable = false, precision = 10, scale = 0) 
private String recordId;
任何人都可以帮忙吗?谢谢。

1 个答案:

答案 0 :(得分:2)

SequenceGenerator注释中有一个名为allocationSize的变量。默认情况下,此大小为50。这意味着Hibernate将保留50个ID,并且不需要为每个插入检索新的id。所以你需要:

  • allocationSize设置为与someSequence incrementBy值相同的值。
  • someSequence上设置incrementBy值以匹配allocationSize值。

然后你的问题就会消失。