java - 是否可以指示hibernate在执行插入时不要设置空值?

标签 java hibernate

我有实体:

@Entity
@Table(name = "message")
public class Message {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Integer id;

    @Column(name = "email")
    private String email;

    @Column(name = "subject")
    private String subject;

    @Column(name = "content")
    private String content;

    @Column(name = "html")
    private String html;

    @Column(name = "status")
    private Integer status;

    @Column(name = "creation_date")
    private Date creationDate;

    @Column(name = "send_date")
    private Date sendDate;

    //GET, SET
}

message 对列 creation_date 的定义如下:

creation_date timestamp without time zone NOT NULL DEFAULT now()\

作为结论,当我没有为 creation_date 设置特定值时,hibernate 将生成如下所示的查询:

insert into partner.message (content, creation_date, email, html, send_date, status, subject) 
values ('text', null, 'text', 'text', null, '1', 'text')

是否有可能避免生成那些 null 值?

顺便说一句,我正在使用 PostgreSQL。它与 PostgreSQL-dialect 有关系吗?

最佳答案

您应该将列 creationDate 设置为不可空:

@Column(name = "creation_date", nullable = false)
private Date creationDate;

IIRC,如果插入为空,Hibernate 应该抛出异常。这样您就必须确保它始终处于设置状态。

另一种选择是为创建日期设置默认值:

@Column(name = "creation_date", nullable = false)
private Date creationDate = new Date(); //Or set it in the constructor

关于java - 是否可以指示hibernate在执行插入时不要设置空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29513143/

相关文章:

java - 在jsp和java之间重用变量名(Spring)

java - Windows 临时目录详细信息 (Java)

java - 如何在 Hibernate 应用程序中处理数据库空值?

java - 如何使用 Hibernate 更新实体而不是将其插入数据库?

java - JPA native 查询 "select into outfile"

java - 调用子类的方法而不是本地方法

java - 在 Hibernate 中使用实体 id 作为引用

hibernate - intellij idea生成持久性映射没有外键

java - 将 PostgreSQL 9.2.1 与 Hibernate 连接起来

java - 在 Android 中的 Activity 之外执行 API 请求