私の春の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/
テーブルが見えません。起動プロセスでは、テーブルが作成されていないようです。
以下のようにコードを更新します。
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
シーケンステーブル名を指定していないため、hibernateはhibernate_sequenceという名前のシーケンステーブルを探し、それをデフォルトとして使用します。
Oracle/Postgresの場合、使用される増分フィールドはシーケンステーブルです。
MySqlには、自動的に増分する増分フィールドがあります。
persistence.xml
を確認してください
property name="hibernate.hbm2ddl.auto" value="create"
hdm2ddl
ではありません
これは私の場合はうまくいきました。
リキッドベースで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>