エンティティにブールプロパティがあります。これが私の注釈です:
@Column(name = "IS_ACTIVE", nullable = false, columnDefinition="BIT DEFAULT 1", length = 1)
public Boolean getActive() {
return isActive;
}
だが columnDefinition="BIT DEFAULT 1"
完全に機能しません。これが、生成されたテーブルの結果として得られるSQLコードです。
IS_ACTIVE BIT(1) NOT NULL,
何が悪いのですか?
そして、このクラスのインスタンスをデータベースに保存しようとすると、例外が発生します。
`com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'IS_ACTIVE' cannot be null`
削除した場合nullable = false
プロパティ:
@Column(name = "IS_ACTIVE", columnDefinition="BIT DEFAULT 1", length = 1)
public Boolean getActive() {
return isActive;
}
この場合、作成したオブジェクトを保存できます。しかし、それはまだデフォルト値は設定されていませんであり、データベースのこのフィールドの値でNULLを取得します。
何かアイデアはありますか?重要な場合は、MySQLサーバー5.1を使用します。どんな助けにも感謝します。前もって感謝します!
BOOLEAN
データ型を使用して、@Column
そのような注釈:
@Column(name = "IS_ACTIVE", columnDefinition = "boolean default true", nullable = false)
private Boolean active = true;
このリンクの正しい答えへの参照 Hibernateでデフォルト値を設定する方法
実際のデータベースのデフォルト値が必要な場合は、columnDefinition-@Column(name =“ myColumn”、nullable = false、columnDefinition =“ int default 100”)を使用します。columnDefinitionの文字列はデータベースに依存することに注意してください。このオプションを選択した場合、動的挿入を使用する必要があるため、Hibernateは挿入時にnull値の列を含めません。それ以外の場合、デフォルトについての説明は関係ありません。
ソリューションの鍵は、動的挿入アノテーションです。次の例のように、エンティティクラスに追加できます。@org.hibernate.annotations.Entity(dynamicInsert = true)