4

テーブル内のnull許容でないフィールドの一部にはデフォルト値があります。JPAを介してテーブルに新しい行を挿入する場合、これらのフィールドに値を渡してデフォルト値を取得したくありません。ただし、Spring JPAリポジトリクラスを介して新しい行を挿入すると、null値を挿入できないというエラーが発生します。JPAがデータベースに送信する挿入ステートメントには、すべてのフィールドがリストされていることに気付きました。

insert into table (field1, field2, field3) values ('abc',null,null);

field2とfield3にはnullが指定されているため、デフォルト値は割り当てられず、データベースはnull値を挿入できないというエラーをスローします。回避策はありますか?

4

2 に答える 2

4

insertableのプロパティを構成して@Column、永続化してはならず、挿入ステートメントから除外することができます。

ドキュメントから-insertable : (Optional) Whether the column is included in SQL INSERT statements generated by the persistence provider.

于 2012-09-17T05:10:36.070 に答える
4

データベースにデフォルト値を割り当てたい場合。NULLとして挿入するのではなく、省略して挿入しないでください。これを行うには、@Column(insertable = false) 注釈を使用できます。

実際のところ、ORMを使用して収集する場合、データベースにデフォルト値を割り当てるのは適切ではないと思います。JPAイベントなどの他の方法を選択して、JAVAのすべての値を開始します。

于 2012-09-17T05:20:52.517 に答える