2011-04-14 45 views
5

在我的域对象我有一个地图:GORM:如何设置一个值的数据类型在地图

Map<String, String> stuff 

GORM会自动创建一个表,其中键和值是为varchar(255)

我需要值为LongText改为。我该如何做这件事?

此外,是否有一个解决方法,这不涉及使用休眠配置?

回答

3

我想你可以在你的Domain类的映射关闭中声明这个设置。

约束的一个字符串字段,以便其MySQL的列类型是TEXT:

static mapping = { 
    myTextField type: 'text' 
} 

也许这可以帮助你:Grails的指南(5.5.2.1 Table and Column Names)

+0

如果'stuff'是标量类型,但它不适用于地图 – mkoryak 2011-04-14 04:14:55

+1

它实际上适用于'Map '。键将始终是varchar(255),但值是MySQL中的longtext和H2和HSQLDB中的longvarchar。 – rlovtang 2012-10-15 19:31:39

+2

在Grails 1.3.7,2.0.0和2.1.1中测试。从模式导出:'create table foo_baz(baz bigint,baz_idx varchar(255),baz_elt longvarchar not null);' – rlovtang 2012-10-15 19:33:49

0

如果您想更好地控制数据库的生成/更新方式,那么最好使用数据库迁移,然后让Hibernate来管理它。我们使用Liquibase,它非常易于使用和灵活,并且已经有一个Grails plug in。另外,如果我没有弄错数据库迁移将被集成到1.4版的Grails核心中,那么您将能够使用模式迁移,而无需安装任何插件。

相关问题