2

环境:

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

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

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

@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;

有人可以帮忙吗?谢谢。

4

1 回答 1

5

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

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

然后你的问题就会消失。

于 2017-09-15T06:41:35.910 回答