Указание размера поля коллекции Map в DOM Grails - PullRequest
2 голосов
/ 04 сентября 2011

У меня есть класс домена Grails 1.3.7, который объявлен так:

class Document {
    String url

    Map metadata = new HashMap()

    static constraints = {
        url(nullable:false, blank: false, maxSize: 2048)
        metadata()
    }
}

Сгенерированная схема выглядит следующим образом:

+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| url         | longtext     | NO   |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+

+--------------+--------------+------+-----+---------+-------+
| Field        | Type         | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| metadata     | bigint(20)   | YES  |     | NULL    |       |
| metadata_idx | varchar(255) | YES  |     | NULL    |       |
| metadata_elt | varchar(255) | NO   |     | NULL    |       |
+--------------+--------------+------+-----+---------+-------+

Мне интересно, как яМожно указать разные типы (в частности, разный размер) для таблицы document_metadata.Я хотел бы иметь возможность хранить строки длиннее 255 символов.Я не мог найти соответствующую документацию в Интернете, возможно, потому что я не мог найти ни одного хорошего ключевого слова.Карта и коллекция - это довольно общие термины!

Спасибо,

Gene

Ответы [ 2 ]

2 голосов
/ 12 января 2012

Было бы довольно просто запустить команду sql alter для базы данных.Хорошее место для этой команды alter было бы BootStrap и с некоторой логикой, которая проверяет определения столбцов таблицы, где они в порядке или нет.Grails не будет касаться уже созданных столбцов.

2 голосов
/ 04 сентября 2011

Единственный способ повлиять на DDL для ваших «метаданных» - это сделать его конкретным классом домена. Использование HashMap не даст вам возможности сделать это.

...