Размер строки в Grails слишком велик для поля базы данных - PullRequest
7 голосов
/ 25 февраля 2012

У меня есть класс домена сообщений, который используется для отправки электронной почты администраторам сайтов

class Message {

  String name
  String subject
  String body

}

Я думал, что String не будет иметь максимального размера, но когда люди помещают слишком большие сообщения, я вижу исключения в моих файлах журнала. Сейчас я ввел ограничение, чтобы ограничить размер сообщения 250, но не могу увеличить его, иначе сохранение не удастся. Я использую PostgreSQL 9.1.1 и Grails 1.3.7. Кто-нибудь знает способ исправить это?

Ответы [ 4 ]

8 голосов
/ 25 февраля 2012

Вы можете указать тип данных, используя ограничение:

static constraints = {
  body type:'text'
}
7 голосов
/ 25 февраля 2012

Добавьте это к классу вашего домена:

static constraints = {
    body(maxSize:1000)
}
1 голос
/ 17 ноября 2017

Настройка type в блоке constraints не работает!

Вместо этого введите блок mapping.

static mapping = {
   body type: 'text'
}
0 голосов
/ 17 ноября 2017

Максимальный размер VARCHAR установлен в базе данных, Grails не имеет права голоса в этом вопросе.Что вы можете сделать, так это сообщить Grails, что вам нужно, и он сгенерирует DDL, в котором вместо строки будет использоваться clob.

Измените отображение столбца на использование типа: "text", добавив при этом maxSize.хочу в ваших ограничениях.Из этого следует, что Grails должен установить тип данных столбца clob.

(Обычно поле clob будет содержать до 4 ГБ, хотя некоторые базы данных допускают его изменение.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...