我正在使用 postgres 数据库。升级到 grails 2.4.3 后,我得到了所有 bool 字段的这种类型的数据库变更集:
changeSet(author: "me(generated)", id: "1383573084784-1") {
addColumn(tableName: "chapter") {
column(defaultValue: true, name: "is_framable", type: "boolean") {
constraints(nullable: "false")
}
}
}
isFramable
是域类 Chapter
中的一个 boolean
字段。即使在运行此迁移之后,它每次都会由 dbm-gorm-diff
我注意到在旧版本的 grails 中,变更集中使用 bool
而不是 boolean
我正在使用 hibernate 版本 4.3.5.5
最佳答案
我的解决方法:
Config.groovy
grails.gorm.default.mapping = {
"user-type" type: my.hibernate.type.BooleanBitType, class: boolean
"user-type" type: my.hibernate.type.BooleanBitType, class: Boolean
}
BooleanBitType.java
import my.hibernate.type.descriptor.BooleanBitTypeDescriptor;
import org.hibernate.type.descriptor.java.BooleanTypeDescriptor;
import org.hibernate.type.descriptor.sql.SqlTypeDescriptor;
public class BooleanBitType extends org.hibernate.type.BooleanType {
public static final BooleanBitType INSTANCE = new BooleanBitType();
public BooleanBitType() {
this(BooleanBitTypeDescriptor.INSTANCE, BooleanTypeDescriptor.INSTANCE);
}
protected BooleanBitType(SqlTypeDescriptor sqlTypeDescriptor, BooleanTypeDescriptor javaTypeDescriptor) {
super(sqlTypeDescriptor, javaTypeDescriptor);
}
}
BooleanBitTypeDescriptor.java
public class BooleanBitTypeDescriptor extends org.hibernate.type.descriptor.sql.BooleanTypeDescriptor {
public static final BooleanBitTypeDescriptor INSTANCE = new BooleanBitTypeDescriptor();
public BooleanBitTypeDescriptor() {
super();
}
public int getSqlType() {
return Types.BIT;
}
}
关于hibernate - grails 2.4.3 升级后不必要的数据库 changeSet 与 boolean 相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26298295/