Как заставить Grails использовать правильный тип столбца в MySQL для поля карты

У меня проблема в Grails 1.1.2 + MySQL.

Мой класс домена Что-то содержит поле

Map<String, Map<Integer, Integer>> priceMap

Когда я запускаю приложение, Grails создает таблицу "что-то" и вложенную таблицу "нечто_price_map". "что-то_карта" содержит

BIGINT(20) price_map
VARCHAR(255) price_map_idx
TINYBLOB price_map_elt

Проблема заключается в том, что когда я заполняю столбец priceMap даже с небольшими данными карты, такими как "priceMap:[en:[100:4, 500:20, 600:24]]", размер данных превышает предел 255bytes.

Есть ли способ указать ограничение maxSize для внутренней карты (Map), чтобы Grails использовал MEDIUMBLOB или BLOBK вместо TINYBLOB?

Кстати... Используя in-mem DB, все работает нормально.

1 ответ

Решение

Как вы, возможно, знаете, существует ограничение отображения для класса домена. Однако ваша проблема может быть слишком сложной для этой функции.

В таких случаях вы можете указать явное отображение Hibernate (через файл hbm) для класса домена. Это обеспечивает полную гибкость Hibernate.

Другие вопросы по тегам