关注grails域类:
class MyClass {
Map myMap
}
现在,对于myMap,grails会自动为地图中的元素创建一个新表。但是,如果我添加太长的元素(例如1024个字符),我会收到数据库错误。
我可以以某种方式告诉grails使myMap表中的相应列足够大以允许更大的字符串,或者我是否必须在DB中手动执行此操作?
我已经尝试了
static constraints = {
myMap(maxSize:1024)
}
不起作用(正如预期的那样,因为maxSize应该引用Map的值而不是Map本身)。
如果不是通过约束,也许可以通过
来实现static mapping { ... }
答案 0 :(得分:5)
我成功使用的另一种方法是将地图推送到协作者域类的集合中。
class DynaProperty {
String name
String value
static belongsTo = MyClass
static constraints = {
value(maxSize:4000) //Or whatever number is appropriate
}
}
然后在MyClass中:
class MyClass {
static hasMany = [dynaProperties:DynaProperty]
}
这几乎一张地图,它使您能够使用动态查找器来提取单个条目。
答案 1 :(得分:0)
您可以看到当前方法的问题 - 在运行时之前无法确定地图中可能存在的问题,那么grails如何为它创建列?我很惊讶它甚至开始工作......