java无法在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;
}
在这种情况下,我可以保存一个创建的对象。但它仍然是默认值未设置,我在数据库中的这个字段的值为空
有什么想法吗?如果重要的话,我会使用MySQL服务器5.1。如果有任何帮助,我将不胜感激。提前谢谢
# 1 楼答案
参考此链接中的正确答案How to set default value in Hibernate
如果想要一个真实的数据库默认值,使用columnDefinition-@Column(name=“myColumn”,nullable=false,columnDefinition=“int default 100”)。请注意,columnDefinition中的字符串依赖于数据库。此外,如果选择此选项,则必须使用dynamic insert,这样Hibernate就不会在insert中包含空值的列。否则,谈论违约就无关紧要了
解决方案的关键是动态插入注释。您可以将其添加到实体类中,例如:
@org.hibernate.annotations.Entity(dynamicInsert = true)
# 2 楼答案
尝试使用
BOOLEAN
数据类型,定义@Column
注释如下: