So zwingen Sie Grails, den richtigen Spaltentyp in MySQL für MAP -Feld zu verwenden
-
18-09-2019 - |
Frage
Ich habe ein Problem in Grails 1.1.2 + Mysql.
Meine Domain -Klasse Etwas enthält Feld
Map<String, Map<Integer, Integer>> priceMap
Wenn ich die App ausführe, erstellt Grails Tabelle 'etwas' und Subtabelle 'there_price_map'. 'tony_price_map' enthält
BIGINT(20) price_map
VARCHAR(255) price_map_idx
TINYBLOB price_map_elt
Das Problem ist, dass beim Ausfüllen der Spalte Pricemap auch mit kleinen Kartendaten wie diesen 'Pricemap: [EN: [100: 4, 500: 20, 600: 24]]' die Größe der Daten über die Grenze von überschreitet 255 BYTES.
Gibt es eine Möglichkeit, die maximale Einschränkung für die innere Karte (Karte) anzugeben, so dass Grals Mediumblob oder Blobk anstelle von TinyBlob verwendet?
Übrigens ... mit In-MEM-DB funktioniert alles gut.
Lösung
Wie Sie vielleicht wissen, gibt es eine Zuordnungsbeschränkung für eine Domain -Klasse. Ihr Problem ist jedoch möglicherweise zu komplex für diese Funktionalität.
In solchen Fällen können Sie eine angeben Explizite Hibernate -Mapping (über HBM -Datei) für eine Domänenklasse. Dies ermöglicht die vollständige Flexibilität von Hibernate.