我有一个Grails 1.3.7域类,声明如下:
class Document {
String url
Map metadata = new HashMap()
static constraints = {
url(nullable:false, blank: false, maxSize: 2048)
metadata()
}
}
生成的架构如下所示:
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| url | longtext | NO | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
+--------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| metadata | bigint(20) | YES | | NULL | |
| metadata_idx | varchar(255) | YES | | NULL | |
| metadata_elt | varchar(255) | NO | | NULL | |
+--------------+--------------+------+-----+---------+-------+
我想知道如何为document_metadata表指定不同的类型(具体地说,不同的大小)。我希望能够存储超过255个字符的字符串。我在网上找不到任何相关文档,可能是因为我无法想出任何好的关键词。地图和收藏是非常通用的术语!
谢谢,
基因
答案 0 :(得分:2)
您能够影响“元数据”的DDL的唯一方法是使其成为具体的域类。使用HashMap不会让你这样做。
答案 1 :(得分:2)
将sql alter命令运行到数据库会非常容易。这个alter命令的一个好地方是BootStrap,它有一些逻辑可以检查表列定义是否合适。 Grails不会触及已创建的列。