我的实体中有一个布尔型属性。这是我的注释:
@Column(name = "IS_ACTIVE", nullable = false, columnDefinition="BIT DEFAULT 1", length = 1) public Boolean getActive() { return isActive; }
但是效果columnDefinition="BIT DEFAULT 1"并不理想。这是我作为生成表的结果得到的SQL代码:
columnDefinition="BIT DEFAULT 1"
IS_ACTIVE BIT(1) NOT NULL,
我究竟做错了什么?
因此,当我尝试将此类的实例保存到数据库时,出现异常:
`com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'IS_ACTIVE' cannot be null`
如果我删除nullable = false财产:
nullable = false
@Column(name = "IS_ACTIVE", columnDefinition="BIT DEFAULT 1", length = 1) public Boolean getActive() { return isActive; }
因此在这种情况下,我可以保存创建的对象。但是仍然 没有设置默认值, 并且我在数据库中此字段的值中得到NULL。
有什么想法吗?如果重要,我会使用MySQL Server 5.1。我将非常感谢您的帮助。提前致谢!
尝试使用BOOLEAN数据类型,@Column像这样定义注释:
BOOLEAN
@Column
@Column(name = "IS_ACTIVE", columnDefinition = "boolean default true", nullable = false) private Boolean active = true;