Как мне сопоставить строку фиксированной длины с Postgresql, используя GORM?

У меня есть строка из 9 символов, которую я хочу сохранить в Postgresql (9.3) как символ (9). Не менее важно, чтобы я правильно проверил правильность базы данных, чего не происходит. Я генерирую схему, используя плагин Database Migration, который использует инструменты Hibernate. Вот что я пробовал до сих пор:

static mapping = {
    poleID column: "pole_id", sqlType: "character", length: 9
}

Именно так он и создается в БД, однако, когда я делаю dbm-gorm-diff, он пытается изменить столбец таким образом:

changeSet(author: "phil (generated)", id: "1401652394765-3") {
    modifyDataType(columnName: "pole_id", newDataType: "character", tableName: "unit")
}

Вы можете видеть, что длина игнорируется. Я также попытался указать это с помощью:

static mapping = {
    poleID column: "pole_id", sqlType: "character(9)"
}

Опять же, он пытается изменить этот столбец, который уже является правильным, до символа (9). Как мне указать сопоставление, чтобы он видел, что БД уже правильно?

1 ответ

У меня просто была похожая проблема с MySQL и Grails 2.3.7 - я пытался использовать

sqltype: 'char', length: 128, 

но длина была проигнорирована, экспорт схемы показал это как 'char'. В MySQL значение char и varchar имеет значение, поэтому я решил эту проблему, указав

sqltype: 'char(128)'

Я думаю, что это просто ошибка в Grails - если только кто-то явно не хотел, чтобы это НЕ работало (но тогда это должно быть лучше задокументировано).

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