数据库中数据类型大小的问题

时间:2018-09-20 06:22:41

标签: java database grails enums

有什么解决方案可以让我在数据库中将companyType设置为大小(10)?我已经在约束中定义了我的companyType的大小,但似乎根本不起作用。在数据库中,它仍然显示我的companyType类型为varchar(255)。

//Domain File
String hostRef
String loginId
String state
CompanyType companyType



static constraints = {
    hostRef(size: 1..20, nullable: true)
    loginId(size: 1..20, nullable: true)
    state()
    companyType(size: 1..10, nullable: true)

}

// Enum
public enum CompanyType {
SOLEPROVIDER(1)

CompanyType(int value) {
    this.value = value
}

private final int value

int getValue() {
    value
}

}

1 个答案:

答案 0 :(得分:1)

对于新的DB字段,您可以将该字段映射到varchar(10)(有关您的Grails版本,请参见Grails用户文档中的“数据库映射”)。这将在数​​据库中创建一个varchar(10)字段。 如果要在创建类型后更改类型,则必须在数据库中或通过数据库迁移脚本进行更改。

如果您使用数据库迁移插件,则可以让插件创建脚本(用于创建或更新字段)并手动对其进行调整。

个人评论

问一下自己是否值得添加此约束而不是使用默认约束。如果您向CompanyType添加的枚举值的长度超过10个字符,则必须扩展数据库类型。如果您可以保证它永远不会超过10个字符,那么值得付出努力。

  

“真正的问题是程序员在错误的地方和错误的时间花了太多时间来担心效率;过早的优化是编程中所有(或至少大部分)邪恶的根源。” –唐纳德·克努斯(Donald Knuth)