Укажите порядок полей в DDL, сгенерированном из классов GORM?

Я использую GORM для создания DDL моей базы данных из классных классов. Это здорово. Однако порядок полей в сгенерированном SQL отличается от порядка полей в классе. Например, если я создаю класс

class Person
{
  String firstName
  String lastName
  String address
  String email
}

генерируется следующий SQL (для MySQL)

CREATE TABLE `test` (
  `id` bigint(20) NOT NULL auto_increment,
  `version` bigint(20) NOT NULL,
  `address` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `first_name` varchar(255) NOT NULL,
  `last_name` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

Поля отсортированы в алфавитном порядке (после автоматически сгенерированных полей идентификатора и версии). Хорошо. в этом случае, но у меня есть несколько гораздо более широких таблиц, в которых есть важная контекстная информация в порядке полей.

Вот мой вопрос: как вы говорите GORM упорядочивать поля в SQL в порядке объявления в классе groovy?


person mycro.be    schedule 30.01.2009    source источник


Ответы (2)


Кажется, нет способа указать порядок, но вы всегда можете создавать свои собственные таблицы по своему усмотрению и предоставлять сопоставления имен в классах вашего домена. Вы также можете позволить GORM создать таблицы, а затем воссоздать таблицы в правильном порядке и после этого отключить автоматический материал DDL в GORM. Если вы используете имена полей и таблиц, выбранные GORM, вам не нужно добавлять никаких сопоставлений.

person John Flinchbaugh    schedule 03.02.2009
comment
Спасибо, Джон. Это подход, который я сейчас использую. Жаль, что нет более крутого способа сделать это. - person mycro.be; 03.02.2009

Я не совсем уверен в этом, но закрытие ограничений определяет порядок полей в представлениях, возможно, это отражается на полях в таблицах.

class Person
{
  String firstName
  String lastName
  String address
  String email
}

static constraints = {
  firstName()
  lastName()
  address()
  email()
}
person elbicho    schedule 30.01.2009
comment
Спасибо за предложение! Я только что проверил это, и, к сожалению, он не меняет порядок сгенерированных полей в DDL. - person mycro.be; 30.01.2009