私は現在まで数ヶ月間オンラインで既に動作している春の起動アプリケーションを持っています。私は、ID生成型配列を持つエンティティを持っていますので、GenerationType.SEQUENCEは既に存在するIDを生成します
@Entity
@ComponentScan
public class MyEntity {
/**
*
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private long id;
}
新しいエンティティが作成され、保存されたときに、今日のイムエラーを取得:
Unique index or primary key violation: "PRIMARY_KEY_D92 ON PUBLIC.MyEntity(ID) VALUES (3713, 250)"; SQL statement:
毎回このエラーは、この中で生成されたID(3713発生時ケース)が既にデータベースに存在しています。だから、なぜ突然、GenerationType.SEQUENCE
が既に存在するIDを生成しているのですか?
EDIT
私はHibernateでこの問題が発生しましたが、我々は、明示的@SequenceGenerator
注釈を持っていたH2 Databaseのバージョン1.4.191
こんにちは。私が 'GenerationType.IDENTITY'に変更した場合、私はIDとしてヌル値だけを取得します。' 'ID" '列にNULLが許可されていません – Mulgard
他の方法を試しましたか? 'persistence.xml'の' hibernate.id.optimizer.pooled.preferred'プロパティーを 'none'に設定すると、各挿入の前にシーケンスを使用する別の方法があります。大文字と小文字を区別。このプロパティは、Hibernate 5より前には使用できない可能性があります。バージョンまたはデータベースについて言及していません。 – coladict