休止状態を使用して、エンティティをデータベースにマップしています。
昨日、コメント フィールドに長さの注釈が付けられていないため、DataTruncationException が発生しました。
エンティティを変更し、アプリケーションを再デプロイしました。ドキュメントによれば、Hibernateは列を変更しませんでした。そのため、データベース テーブルを手動でvarchar(255) から longtext に変更しました。
現在、エンティティ属性には注釈が付けられて@Column(length = 5000)
おり、データベース列はロングテキスト形式です。
DataTruncationException は引き続き毎回表示されます
すべてのデータをエクスポートし、休止状態に新しいデータベースを作成させ、データを再度挿入することにしました。これは最終的に機能し、問題は解決されました。
しかし、hibernate は hibernate_sequence->nextval エントリを無視し、id 1 からやり直すことに気付きました (Hibernate は、hibernate_sequence テーブルに 1 を含む 2 番目の行を作成しました)。
その値を削除して必要な ID を設定すると、すべて問題ないように見えます。
しかし、これには 2 つの疑問が生じます。
変更されたテーブルがエンティティと一致するようになったことを hibernate が認識しないのはなぜですか?
hibernate が最初の実行時に next_val を無視し、最初からやり直すのはなぜですか?