Come forzare Grails di utilizzare il corretto tipo di colonna in MySQL per il campo Mappa
-
18-09-2019 - |
Domanda
Ho un problema in Grails 1.1.2 + MySQL.
La mia classe di dominio Qualcosa contiene campo
Map<String, Map<Integer, Integer>> priceMap
Quando eseguo l'applicazione, Grails crea tabella 'qualcosa' e sub-table 'something_price_map'. 'Something_price_map' contiene
BIGINT(20) price_map
VARCHAR(255) price_map_idx
TINYBLOB price_map_elt
Il problema è che quando riempio-sulla colonna priceMap anche con piccoli dati della mappa come questa 'priceMap: [en: [100: 4, 500: 20, 600: 24]]', la dimensione dei dati supera il limite di 255bytes.
C'è un modo di specificare maxSize vincolo per la mappa interna (Map), in modo che Grails utilizza MEDIUMBLOB o BLOBK invece di TINYBLOB?
A proposito ... Utilizzando in-mem DB, tutto funziona bene.
Soluzione
Come forse sapete, c'è una vincolo mappatura per una classe di dominio . Tuttavia, il problema potrebbe essere troppo complessa per tale funzionalità.
In questi casi, è possibile specificare un esplicito mapping Hibernate (tramite file HBM) per una classe di dominio. Ciò permette la flessibilità completa di Hibernate.