2017-07-04 22 views
1

HibernateとPostgreSQLデータベースを持つSpring(Bootではなく)プロジェクトに取り組んでいます。私はマイグレーションのためにフライウェイも使用します。 私は、データベースのスキーマを生成するためにFlywayを使用し、リソースフォルダ内の所定のSQLスクリプトを使用して、初期データをデータベースに挿入します。このため、私はhibernate.hbm2ddl.autoプロパティをhibernate.propertiesファイルから除外しました。起動時に は、スキーマが作成され、データがデータベースに挿入されているが、私の問題は、この方法Hibernateはその配列を生成しない、と私は、アプリケーションからのデータを保存傾けることを、次のとおりです。Hibernateシーケンスが生成されていません

org.postgresql.util.PSQLException: ERROR: relation "hibernate_sequence" does not exist 

これで何ができますか?あなたは私は1つが私のために働いている提供します、@SequenceGenerator注釈を逃すと仮定し、そこに何が間違っているかわからない任意のコードを提供しなかったとして

CREATE SEQUENCE hibernate_sequence START 1; 
+0

スキーマを提供する必要があります。しかし、エラーメッセージは 'hibernate_sequence'が存在しないと言っています。ですから、DBへのシーケンスを作成して試してみる必要があります。 – Zico

+0

私は参照してください。だから、手動でSQLスクリプトを作成するのは大丈夫です。これはhibernate_sequenceを作成しますか? –

+0

はいです。原因は、hibernateがスキーマを生成できないためです。 – Zico

答えて

0

@Entity 
@Table(name = "your_table") 
@SequenceGenerator(name = "your_table_id_seq", sequenceName = "your_table_id_seq", allocationSize = 1) 
public class YourTable implements Serializable { 

@Id 
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "your_table_id_seq") 
private Long id; 

。 。 。

+0

今より良いですが、まだエラーがあります。 'org.postgresql.util.PSQLException:エラー:重複したキー値が一意性制約に違反しているためuser_pkey" 詳細:キー(id)=(1)は既に存在していますので、シーケンスは作成されましたが、 。 注文は以下の通りです:hibernate_sequenceの作成、テーブルの作成、データの挿入。 hibernate_sequenceに値をインクリメントしないデータを挿入するようですか? –

+0

あなたのスキーマ内の 'id'に' DEFAULT nextval( 'hibernate_sequence') 'を追加してください –

+0

ありがとう、それは私のためにうまくいきます! –

1

:あなたはこのようなシーケンスを作成する必要が

+0

ありがとう、私もこのソリューションを実装するのを楽しみにしています! –