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 值。如果您的数据库表允许该特定列的空值持久化具有空字段的实体,即使您的表具有默认值,也会将该字段设置为空。我可能是错的,但这是我在项目中使用 JPA 得出的观察结果。

于 2013-07-17T09:13:56.850 回答