Настройте имя столбца для встроенных полей - PullRequest
2 голосов
/ 29 декабря 2011

У меня есть класс домена Foo со встроенным полем Bar:

class Foo {
  Bar bar

  static embedded=['bar']
}

class Bar {
  String ham
}

Что дает мне таблицу foo со столбцом bar_ham.

Проблема в том, что мои Foo.bar и Bar.ham в действительности имеют гораздо более длинные имена, поэтому столбец имеет длину более 30 символов, что не нравится Oracle.

Так как мне настроить имя встроенного столбца?

Я пробовал что-то вроде следующего, но это не сработало:

class Foo {
  Bar bar

  static embedded=['bar']

  static mapping={
    bar column:'b'
  }
}

Ответы [ 2 ]

1 голос
/ 31 декабря 2011

Укажите настраиваемое имя столбца в классе Bar, например:

class Foo {
  Bar bar

  static embedded=['bar']

}


class Bar {
    String bazIsReallyLong

    static mapping = {
        bazIsReallyLong column:'baz'
    }
}

Протестировано на Grails 2.0, при этом была создана таблица Foo с именами столбцов ID, VERSION и BAZ.

Однако это повлияет на все таблицы, содержащие Baz.


Обновления на основе комментария

Другой вариант - изменить имя сопоставленного класса на более короткое, например:

class Foo {
  Bar b

  static embedded=['b']

}


class Bar {
    String bazIsReallyLong
}

Это создает столбец B_BAZ_IS_REALLY_LONG, который, по крайней мере, помогает.

В противном случае я не вижу вариантов явного переименования встроенных столбцов.

0 голосов
/ 29 декабря 2011

Пожалуйста, посмотрите @

@ AttributeOverride

раздел 2.2.2.4.

...