Hibernate JPA - 插入记录时序列变为负数
Hiberate JPA - sequences becoming negative when record is inserted
环境:
Database - Oracle 12c
Hibernate - 5.2.10Final
JPA - version 2.0
我们正在使用 entityManager.merge 插入对象。 sequence的值是正值,但是插入到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;
有人可以帮忙吗?谢谢。
在 SequenceGenerator
注释中有一个名为 allocationSize
的变量。此大小默认为 50
。这意味着 Hibernate 将保留 50 个 id,并且不需要为每个插入检索新的 id。所以你需要:
- 将
allocationSize
设置为与 someSequence
incrementBy 值相同的值。
- 或 在您的
someSequence
上设置 incrementBy 值以匹配 allocationSize
值。
那么你的问题就迎刃而解了。
环境:
Database - Oracle 12c
Hibernate - 5.2.10Final
JPA - version 2.0
我们正在使用 entityManager.merge 插入对象。 sequence的值是正值,但是插入到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;
有人可以帮忙吗?谢谢。
在 SequenceGenerator
注释中有一个名为 allocationSize
的变量。此大小默认为 50
。这意味着 Hibernate 将保留 50 个 id,并且不需要为每个插入检索新的 id。所以你需要:
- 将
allocationSize
设置为与someSequence
incrementBy 值相同的值。 - 或 在您的
someSequence
上设置 incrementBy 值以匹配allocationSize
值。
那么你的问题就迎刃而解了。