0

エンティティがあるとしましょう:

@Entity
public class foo(){
  String field = null;
  //getter and setter
}

データベースの列fieldにはデフォルト値 "bar" があります。

fieldプロパティをnull以外に設定せずにこのエンティティを永続化すると、挿入されたレコードのフィールド列に値が含まれますnullbar?

(つまり、null フィールドはnull値付きの挿入ステートメントに含まれますか、または挿入ステートメントでスキップされ、デフォルト値が使用されますか?)

4

2 に答える 2

2

注釈の使用

@Column(insertable = false)
private String field = null;

field生成された SQL にプロパティが追加されないようにします。そして、列のデフォルト値が使用されます。

それ以外の場合、nullフィールドは値を持つ挿入ステートメントに含まれnullます。列が でマークされている場合not null、データベース エラーが発生します。ただし、nullが列の有効な値である場合は、null永続化されます。

于 2013-07-17T08:48:30.487 に答える
0

データベース テーブルに特定の列に対して null 以外の制約がある場合、エンティティを永続化すると、特定の列に対して Null 値は受け入れられないというメッセージとともに例外がスローされます。データベース テーブルがその特定の列に null を許可する場合、null フィールドを持つエンティティは、テーブルに既定値がある場合でも、フィールドを null に設定します。私は間違っているかもしれませんが、それは私のプロジェクトで JPA を使用して描いた観察です。

于 2013-07-17T09:13:56.850 に答える