Cómo obligar a los griales a usar el tipo de columna adecuado en MySQL para el campo MAP
-
18-09-2019 - |
Pregunta
Tengo un problema en Grails 1.1.2 + mysql.
Mi clase de dominio algo contiene campo
Map<String, Map<Integer, Integer>> priceMap
Cuando ejecuto la aplicación, Grails crea la tabla 'algo' y sub-table 'something_price_map'. 'something_price_map' contiene
BIGINT(20) price_map
VARCHAR(255) price_map_idx
TINYBLOB price_map_elt
El problema es que cuando lleno la columna PRICEMAP incluso con datos de mapa pequeños como este 'Precita: [es: [100: 4, 500: 20, 600: 24]]', el tamaño de los datos excede el límite de 255 bytes.
¿Hay alguna forma de especificar la restricción MaxSize para el mapa interno (MAP), de modo que Gails usa mediosblob o blobk en lugar de tinyblob?
Por cierto ... usando DB en Mem, todo funciona bien.
Solución
Como sabrán, hay un restricción de mapeo para una clase de dominio. Sin embargo, su problema puede ser demasiado complejo para esa funcionalidad.
En tales casos, puede especificar un mapeo de hibernado explícito (a través del archivo HBM) para una clase de dominio. Esto permite la flexibilidad completa de Hibernate.