Как скорректировать ограничения / DB, отображающийся для Карты в классе домена чаш Грааля

Следующий класс домена чаш Грааля:

class MyClass {
  Map myMap
}

Теперь для myMap, чаши Грааля автоматически составляют новую таблицу для элементов в карте. Однако, если я добавляю элементы, которые являются слишком длинными (например, 1 024 символа), я получаю ошибку DB.

Я могу так или иначе сказать чашам Грааля делать соответствующий столбец в таблице myMap достаточно большим для обеспечения больших Строк, или я должен сделать это вручную в DB?

Я уже попробовал

static constraints = {
  myMap(maxSize:1024)
}

который не работает (как ожидалось, потому что maxSize должен относиться к значениям Карты а не к самой Карте).

Если не через ограничения, возможно, существует способ сделать это через

static mapping { ... }

?

5
задан Jörg Brenninkmeyer 13 July 2010 в 13:00
поделиться

2 ответа

Альтернативный подход, который я успешно использовал, заключался в том, чтобы вытолкнуть карту в коллекцию предметного класса сотрудника.

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]
}

Это почти карта, и она дает вам возможность использовать динамические средства поиска для поиска отдельной записи.

5
ответ дан 14 December 2019 в 18:55
поделиться

чего вы пытаетесь достичь? Всегда ли на карте одинаковое количество объектов? Если есть, вы должны определить эти свойства в своем классе.

Вы можете увидеть проблему с вашим текущим подходом - нет способа выяснить, что может быть на карте до времени выполнения, так как же grails может создавать для этого столбцы? Я удивлен, что это даже сработало с самого начала ...

0
ответ дан 14 December 2019 в 18:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: