【问题标题】:How JPA handles null values in entities?JPA 如何处理实体中的空值?
【发布时间】:2013-07-15 17:32:36
【问题描述】:

假设我有实体:

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

在数据库列中field 具有默认值“bar”。

如果我保留此实体而不将 field 属性设置为 null 以外的任何值,插入记录中的字段列的值是否为 nullbar

(也就是说,null字段是包含在insert语句中null值还是会在insert语句中被跳过而使用默认值?)

【问题讨论】:

    标签: java jpa null


    【解决方案1】:

    使用注解

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

    将阻止将field 属性添加到生成的SQL 中。然后将使用列默认值。

    否则null 字段将包含在插入语句中,并带有null 值。如果该列标有not null,则会引发数据库错误。但如果null 是该列的有效值,则null 将被持久化。

    【讨论】:

      【解决方案2】:

      如果您的数据库表对给定列具有非空约束,则持久化您的实体将引发异常,并显示消息为给定列不接受 Null 值。 如果您的数据库表允许该特定列的空值持久化具有空字段的实体,即使您的表具有默认值,也会将该字段设置为空。 我可能错了,但这是我在项目中使用 JPA 得出的观察结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-03-22
        • 2020-07-19
        • 2018-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多