Проблемы с размером типа данных в базе данных - PullRequest
0 голосов
/ 20 сентября 2018

Есть ли какие-нибудь решения, позволяющие мне установить companyType в размер (10) в базе данных?Я определил размер моего companyType в ограничениях, но, похоже, он вообще не работает.В базе данных все еще отображается мой тип companyType varchar (255).

//Domain File
String hostRef
String loginId
String state
CompanyType companyType



static constraints = {
    hostRef(size: 1..20, nullable: true)
    loginId(size: 1..20, nullable: true)
    state()
    companyType(size: 1..10, nullable: true)

}

// Enum
public enum CompanyType {
SOLEPROVIDER(1)

CompanyType(int value) {
    this.value = value
}

private final int value

int getValue() {
    value
}

}

1 Ответ

0 голосов
/ 20 сентября 2018

Для нового поля БД вы можете сопоставить поле с varchar(10) (см. «Отображение базы данных» в документации пользователя Grails для вашей версии Grails).Это должно создать поле varchar(10) в БД.Если вы хотите изменить тип после того, как он уже создан, вы должны либо изменить его в БД, либо с помощью сценария переноса базы данных.

Если вы используете плагин переноса базы данных, вы можете позволить плагину создатьСценарий (для создания или обновления поля) настраивает его вручную.

Личный комментарий

Спросите себя, стоит ли добавлять это ограничение вместо того, чтобы работать со значением по умолчанию.Если вы когда-нибудь добавите значение enum к CompanyType длиной более 10 символов, вам придется расширить тип вашей БД.Если вы можете гарантировать, что он никогда (ни при каких обстоятельствах) не будет длиннее 10 символов, тогда это может стоить усилий.

"Настоящая проблема заключается в том, что программисты потратили слишком много времени, беспокоясь оэффективность в неправильных местах и ​​в неподходящее время; преждевременная оптимизация - корень всего зла (или, по крайней мере, большей его части) в программировании ».- Дональд Кнут

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