Grails изменяют размер столбца базы данных для множества строк

#grails #grails-orm

#grails #grails-orm

Вопрос:

У меня есть доменный класс, который выглядит следующим образом:

 class Foo {
    static hasMany = [bar: String]
}
  

Проблема в том, что это создает таблицу объединения со столбцом VARCHAR(255) в MySQL, которая намного больше, чем мне нужно. В моем примере bar — это набор, а не индексированная коллекция, поэтому попытка использовать indexColumn не работает. У JoinTable нет атрибута для изменения типа / длины столбца. Возможно ли изменить размер столбца без изменения структуры класса домена?

Ответ №1:

Это работает (протестировано с grails 2.4):

 class Foo {
    static hasMany = [
        bars:String
    ]

    static mapping = {
        bars joinTable: [column: 'BARS_STRING', length: 112]
    }
}
  

Ответ №2:

Вы также можете попробовать sqlType , например

 class Foo {
    static hasMany = [bar: String]

    static mapping = {
        names joinTable: [column: 'bar', sqlType: 'varchar(32)']
    }

}