2017-09-15 66 views
0

環境:Hiberate JPA - 序列成爲負時記錄插入

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; 

任何人都可以幫忙嗎?謝謝。

回答

1

SequenceGenerator註釋中有一個名爲allocationSize的變量。該尺寸默認爲50。這意味着Hibernate將保留50個ID,並且不需要爲每個插入檢索新的ID。所以你需要:

  • 設置allocationSize到像你的someSequence incrementBy值相同的值。
  • 在您的someSequence上設置incrementBy值以匹配allocationSize的值。

然後你的問題就會消失。