私は、エンティティで、次のID説明があります。このIDを生成するためのLiquiBaseを+ Postgresqlの+春JPA:Idを自動インクリメント問題
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Long id;
LiquiBaseを命令の次されています。また、私が持っている
<column name="id" autoIncrement="true" type="INT">
<constraints nullable="false" primaryKey="true" primaryKeyName="pk_entity"/>
</column>
をこのテーブルにあらかじめ定義された値を挿入するliquibaseスクリプト
<insert tableName="entityTable" schemaName="public">
<column name="id">1</column>
<!- other fields-->
</insert>
Jpaリポジトリを使用してIDなしで新しいレコードを挿入しようとすると、問題が発生しました。 "duplicate id"のようなメッセージでエラーが発生しました。 したがって、jpa(hibernate)は新しいid値を取得するためにpostgresqlシーケンスを使用しないことを理解しています。また、エンティティのID記述にシーケンス名を含めることは望ましくありません。私はこの状況がpostgresql自体によって解決されることを期待しています。 そして、私は 'hibernate_sequence'を使用しません。 だから、どのように私はこの問題を解決することができます任意のアイデア。 ありがとうございます。
FYI PostgreSQLのJPA GenerationType.IDENTITYは、 "SERIAL"カラムタイプ(つまり、データストアで生成された)を使用することを意味します。これはSEQUENCEではありません。 SEQUENCEを望むなら、私はJPAの 'GenerationType.SEQUENCE' –
を使っていたでしょうが、liquibaseは 'serial'型を生成しません。 –
JPAとLiquibaseの両方を使いたい場合、JPAでIDENTITYを使うことはできません。 –