Spring data/jpaを使用したSpringBoot 2.0.1.RELEASEアプリケーションがあります
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
しかし、Amazon Aurora DBで更新を行うと、次のエラーが発生しました。
2018-04-13 09:20 [pool-1-thread-1]エラーohid.enhanced.TableStructure.execute(148)-hi値を読み込めませんでしたcom.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Table ' elbar.hibernate_sequence 'はSun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)に存在しません
保存したいエンティティにこれがあります
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
IDを取得するDBの欠点も回避したいと思います。
生成時にGenerationType.AUTO
hibernateはデフォルトのhibernate_sequence
tableを探すので、生成を次のようにIDENTITY
に変更します。
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
プレビューブートバージョンから移行する場合に備えて:
application.yml
は、休止状態がhibernate_sequence
エントリ。
spring.jpa.hibernate.use-new-id-generator-mappings
これがBoot 1.xのデフォルトでした
Application.ymlに次の設定を追加します:
spring: jpa: hibernate: use-new-id-generator-mappings: false
または、application.propertiesを使用する場合はこれ
spring.jpa.hibernate.use-new-id-generator-mappings= false
テーブルスキーマとJavaエンティティとの間でマッピングの不一致が発生した場合、次のことを行います。
spring.jpa.hibernate.ddl-auto=create
プロパティのapplication.propertiesこれにより、エンティティに基づいてスキーマが再作成されます。必要に応じて、作成したテーブルを古いスキーマと比較して、違いを確認できます。
警告:これにより、アプリケーションでエンティティとして指定されたすべてのテーブルのデータが切り捨てられます