Укажите порядок полей в DDL, сгенерированных из классов GORM? - PullRequest
2 голосов
/ 30 января 2009

Я использую 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

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

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

Ответы [ 2 ]

2 голосов
/ 30 января 2009

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

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

static constraints = {
  firstName()
  lastName()
  address()
  email()
}
1 голос
/ 03 февраля 2009

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

...