2011-04-14 9 views
5

en mi objeto de dominio Tengo un mapa:GORM: cómo establecer el tipo de datos de un valor en un mapa

Map<String, String> stuff 

GORM crea automáticamente una tabla donde la clave y el valor son varchar (255).

necesito el valor para ser LongText en su lugar. ¿Cómo hago esto?

Además, ¿hay una solución para esto que no implique el uso de la configuración de hibernación?

Respuesta

3

Creo que puede declarar esta configuración en el cierre de la asignación de su clase de dominio.

restricción para un campo Cadena de manera que su tipo de columna MySQL es TEXTO:

static mapping = { 
    myTextField type: 'text' 
} 

Tal vez esto puede ayudar a salir: Guía Griales (5.5.2.1 Table and Column Names)

+0

esto funcionaría si 'cosas' fuera un escalar tipo, pero no funciona para un mapa – mkoryak

+1

Realmente funciona para 'Map '. La clave siempre será varchar (255), pero el valor es longtext en MySQL y longvarchar en H2 y HSQLDB. – rlovtang

+2

Probado en Grails 1.3.7, 2.0.0 y 2.1.1. Desde la exportación del esquema: 'create table foo_baz (baz bigint, baz_idx varchar (255), baz_elt longvarchar no nulo);' – rlovtang

0

Si desea tener más control sobre cómo se genera/actualiza la base de datos, entonces es mejor usar una migración de base de datos y luego dejar que Hibernate lo administre. Usamos Liquibase, que es muy fácil de usar y flexible, y ya existe un Grails plug in para él. Además, si no me equivoco, las migraciones de bases de datos se integrarán en el núcleo de Grails para la versión 1.4, por lo que podrá usar las migraciones de esquema sin tener que instalar ningún complemento.

Cuestiones relacionadas