2016-06-30 13 views
0

である私は私のデータベース(Oracleの9iの)中列からIDを生成するためにJPAを使用しようとしているJPA - シーケンスから生成されたIDは常に0

私はあちこちで見つけたものから、ここでの注釈のグループがあるI 「私のIDを変数に設定しまし:私は新しいオブジェクトを作成するたびに

@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に設定され、そのため私は、データを永続化することはできません。私はGenerationType.SEQUENCEからGenerationType.AUTOに戦略を変更しようとしましたが、何も変わりません。この特定のテーブルでは、シーケンス番号は約8300であるはずです。

どこが間違っていましたか?

+0

オブジェクトの作成時にIDは生成されません。それはあなたがそれを永続させるときに生成されます。 –

+0

シーケンス番号の生成[Java - JPA - Generators - @SequenceGenerator](0120)を参照してください。 –

+0

とログには何が表示されますか? –

答えて

0

私は実際に自分の問題を解決しました。それは私が暴露したものとは直接関係しないことが起こりました。

私が持続しようとしていた。このオブジェクトは、比較的複雑なオブジェクトの一部であり、親オブジェクトに私はJPAマッピング注釈にCascadeTypeを追加しませんでした:

@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); 
関連する問題