2016-06-30 64 views
0

我試圖使用JPA生成的序列編號在我的數據庫(甲骨文9I)JPA - 從序列生成的ID始終爲0

從我發現這裏和那裏,這裏是組註釋的我

@Id 
@SequenceGenerator(name="PROCEDURENORMALE_SEQ_GEN", sequenceName = "PROCEDURENORMALE_SEQ") 
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "PROCEDURENORMALE_SEQ_GEN") 
@Column(name = "IDPROCEDURENORMALE", unique = true, nullable = false, precision = 10, scale = 0) 
private long idProcedureNormale; 

但是,每當我創建一個新的對象,此ID始終設置爲0,因爲我不能堅持數據:「已經在我的ID變量設置。我試圖將策略從GenerationType.SEQUENCE更改爲GenerationType.AUTO,沒有任何改變。對於這個特定的表格,序號應該是大約8300.

我哪裏出錯了?

+0

創建對象時不會生成ID。它是在你堅持它時產生的。 –

+0

檢查此sequencenumber生成[Java - JPA - 生成器 - @SequenceGenerator](http://stackoverflow.com/questions/2595124/java-jpa-generators-sequencegenerator) –

+0

和日誌說什麼? –

回答

0

我真的解決了我的問題,那發生了不直接與我所暴露的相關。

這個對象,我試圖堅持是一個相對複雜的對象的一部分,並在父對象我沒有一個CascadeType的添加到JPA映射註釋:

@OneToMany(fetch = FetchType.LAZY, mappedBy = "dossier") 
private Set<Procedurenormale> proceduresNormales = new HashSet<>(0); 

這個註解更改爲以下解決了問題:

@OneToMany(fetch = FetchType.LAZY, mappedBy = "dossier", cascade = CascadeType.ALL) 
private Set<Procedurenormale> proceduresNormales = new HashSet<>(0);