Jör*_*yer 5 database mapping grails hibernate-mapping grails-domain-class
关注grails域类:
class MyClass {
Map myMap
}
Run Code Online (Sandbox Code Playgroud)
现在,对于myMap,grails会自动为地图中的元素创建一个新表.但是,如果我添加太长的元素(例如1024个字符),我会收到DB错误.
我可以以某种方式告诉grails使myMap表中的相应列足够大以允许更大的字符串,或者我是否必须在数据库中手动执行此操作?
我已经试过了
static constraints = {
myMap(maxSize:1024)
}
Run Code Online (Sandbox Code Playgroud)
哪个不起作用(正如预期的那样,因为maxSize应该引用Map的值而不是Map本身).
如果不是通过约束,也许有办法通过约束
static mapping { ... }
Run Code Online (Sandbox Code Playgroud)
?
我成功使用的另一种方法是将地图推送到协作者域类的集合中.
class DynaProperty {
String name
String value
static belongsTo = MyClass
static constraints = {
value(maxSize:4000) //Or whatever number is appropriate
}
}
Run Code Online (Sandbox Code Playgroud)
然后在MyClass中:
class MyClass {
static hasMany = [dynaProperties:DynaProperty]
}
Run Code Online (Sandbox Code Playgroud)
这几乎是一张地图,它使您能够使用动态查找器来提取单个条目.