Следующий класс домена чаш Грааля:
class MyClass {
Map myMap
}
Теперь для myMap, чаши Грааля автоматически составляют новую таблицу для элементов в карте. Однако, если я добавляю элементы, которые являются слишком длинными (например, 1 024 символа), я получаю ошибку DB.
Я могу так или иначе сказать чашам Грааля делать соответствующий столбец в таблице myMap достаточно большим для обеспечения больших Строк, или я должен сделать это вручную в DB?
Я уже попробовал
static constraints = {
myMap(maxSize:1024)
}
который не работает (как ожидалось, потому что maxSize должен относиться к значениям Карты а не к самой Карте).
Если не через ограничения, возможно, существует способ сделать это через
static mapping { ... }
?
Альтернативный подход, который я успешно использовал, заключался в том, чтобы вытолкнуть карту в коллекцию предметного класса сотрудника.
class DynaProperty {
String name
String value
static belongsTo = MyClass
static constraints = {
value(maxSize:4000) //Or whatever number is appropriate
}
}
А затем в MyClass:
class MyClass {
static hasMany = [dynaProperties:DynaProperty]
}
Это почти карта, и она дает вам возможность использовать динамические средства поиска для поиска отдельной записи.
чего вы пытаетесь достичь? Всегда ли на карте одинаковое количество объектов? Если есть, вы должны определить эти свойства в своем классе.
Вы можете увидеть проблему с вашим текущим подходом - нет способа выяснить, что может быть на карте до времени выполнения, так как же grails может создавать для этого столбцы? Я удивлен, что это даже сработало с самого начала ...