2017-05-04 5 views
0

私はPostgreSQLデータベースにJPAを使ってマッピングされたエンティティを持っています。hbm2ddl.autoアップデートと新しいブール値のプロパティがレコード付きの既存のテーブルに追加されました

テーブルが存在し、そこにレコードがいくつかあるので、単純な新しいブール値(B oolean)を追加したいと思います。

ログでは、ブール値ではなくブール値ではないため、NULLを使用してalter tableを正しく表示できます。 データベースは更新されていません。

私のSQLクライアントで直接alter tableを実行しようとしていますが、私はちょうど追加しているカラムに問題があることがわかります... 明らかに既に存在するレコードは、その列が作成されます。

これは、少なくとも1つのレコードを持つテーブルにnot nullプロパティを作成したい場合はどうすればいいですか? ありがとう

答えて

0

新しいboolean列を追加してテーブルを更新すると、以前の追加されたテーブルの行に問題が発生しています。

以前のテーブルの行は、新しく追加された列の値がnullになります。

JPAエンティティのプロパティのデフォルト値は、アノテーションの属性としてcolumnDefinitionを使用して設定できます。

あなたJPAエンティティに新しいブール型プロパティを追加したい場合は、この

@Column(name = "is_active", columnDefinition="tinyint(1) default 1") 
private boolean isActive; 

を試すことができますし、hbm2ddlを使用しているので、これはあなたのために、新鮮なboolean列を作成だけでなく、それを与えるだけでなく、デフォルト値はtrueです。また、そのテーブルの以前に追加されたすべての行に対してtrueに設定されます。

希望すると助かります!

+0

ありがとうございますが、ソリューションはdbmsに依存しません。たとえば、PostgreSQLではtinyintは有効な型ではありません... bool default true; – Gamby

関連する問題