ローカル開発のためのh2インメモリDBを持つバネブック(v 1.5.2)プロジェクトセットアップがあります。これはかなり新しいプロジェクトなので、従来のコード(まだ..)はhandle legacy id-generatorsにはありません。そこで、spring.jpa.hibernate.use-new-id-generator-mappings: true
と設定しました。h2 VS spring.jpa.hibernate.use-new-id-generator-mappings
src/main/resources/data.sql
を提供することによって、いくつかの初期データを追加します。ファイルにはinsert
コマンドだけが含まれていますが、エンティティA
の場合を考えてみましょう。
我々のエンティティは、設定下記IDジェネレータを有する:
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
これは、しかし、次のエラーが発生し、別のエントリを格納しようとすると(即ちaRepo.save(newA)
)。
Caused by: org.h2.jdbc.JdbcSQLException: Unique index or primary key violation: "PRIMARY KEY ON PUBLIC.A(ID)"; SQL statement:
insert into a (something, id) values (?, ?)
spring.jpa.hibernate.use-new-id-generator-mappings: false
を設定したり、初期データを挿入したりしないと、両方とも問題が解決されます。しかし、私たちはむしろ上記の設定がうまくいかない理由とそれを機能させることができるかどうかを理解したいと思います。
ありがとうございます! :-)