一尘不染

在Hibernate中设置属性的默认值不起作用

hibernate

我的实体中有一个布尔型属性。这是我的注释:

@Column(name = "IS_ACTIVE", nullable = false, columnDefinition="BIT DEFAULT 1", length = 1)
public Boolean getActive() {
    return isActive;
}

但是效果columnDefinition="BIT DEFAULT 1"并不理想。这是我作为生成表的结果得到的SQL代码:

IS_ACTIVE BIT(1) NOT NULL,

我究竟做错了什么?

因此,当我尝试将此类的实例保存到数据库时,出现异常:

`com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'IS_ACTIVE' cannot be null`

如果我删除nullable = false财产:

@Column(name = "IS_ACTIVE", columnDefinition="BIT DEFAULT 1", length = 1)
public Boolean getActive() {
    return isActive;
}

因此在这种情况下,我可以保存创建的对象。但是仍然 没有设置默认值, 并且我在数据库中此字段的值中得到NULL。

有什么想法吗?如果重要,我会使用MySQL Server 5.1。我将非常感谢您的帮助。提前致谢!


阅读 333

收藏
2020-06-20

共1个答案

一尘不染

尝试使用BOOLEAN数据类型,@Column像这样定义注释:

@Column(name = "IS_ACTIVE", columnDefinition = "boolean default true", nullable = false)
private Boolean active = true;
2020-06-20