web-dev-qa-db-ja.com

シーケンス「HIBERNATE_SEQUENCE」が見つかりません。 SQL文

私の春のMVCアプリには、次のオブジェクトがあります。アプリでdevtoolを使用してデータのビジュアルを作成しようとしています。

@Entity
@Data
public class ConsultationRequest {
    @Id
    @GeneratedValue
    private Long id;

    private String name;

    private String email;

    private String purpose;

    private String programme;

    private int year;

    private String language;

    private String comments;
    @Enumerated(EnumType.STRING)
    private ConsultationStatus status;
}

次に、jpaを使用してエンティティを作成しました。

@Repository
public interface ConsultationRequestRepository extends JpaRepository<ConsultationRequest, Long> {

}

問題は、アプリケーションをロードすると、2つのエラーが発生することです。

 Unsuccessful: drop sequence hibernate_sequence
[36morg.hibernate.tool.hbm2ddl.SchemaExport  Sequence "HIBERNATE_SEQUENCE" not found; SQL statement:

その後、私が開くと

http://localhost:8080/h2-console/

テーブルが見えません。起動プロセスでは、テーブルが作成されていないようです。

13
Jeff

以下のようにコードを更新します。

 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 private Long id;

シーケンステーブル名を指定していないため、hibernateはhibernate_sequenceという名前のシーケンステーブルを探し、それをデフォルトとして使用します。

Oracle/Postgresの場合、使用される増分フィールドはシーケンステーブルです。
MySqlには、自動的に増分する増分フィールドがあります。

36
Rohit Gaikwad

persistence.xmlを確認してください

property name="hibernate.hbm2ddl.auto" value="create"

hdm2ddlではありません

これは私の場合はうまくいきました。

5
David

リキッドベースで2次キャッシュを使用する場合、次のように変更ログにシーケンスを追加する必要があります。

<changeSet author="liquibase-docs"
    id="createSequence-example">
    <createSequence catalogName="cat" cycle="false"
        incrementBy="1" ordered="true" schemaName="public"
        sequenceName="hibernate_sequence" startValue="0" />
</changeSet>
0
Oncledjo