Pergunta

Eu uso GORM para gerar DDL do meu banco de dados a partir de classes Groovy. O que é ótimo. No entanto, a ordem dos campos no SQL gerado não é o mesmo que a ordem dos campos na classe. Por exemplo, se eu criar a classe

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

o seguinte SQL é gerada (para 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

Os campos foram classificados em alfabética ordem (após os campos de identificação e versão geradas automaticamente). Esta é O.K. neste caso, mas eu tenho algumas tabelas muito mais amplas em que há informação contextual importante na ordem dos campos.

Aqui está a minha pergunta: Como você diz GORM para ordenar os campos na SQL na ordem de declaração na classe Groovy?

Foi útil?

Solução

Não parece ser uma maneira de especificar a ordem, mas você pode sempre criar seus próprios quadros como você deseja-los e fornecer mapeamentos de nome em suas classes de domínio. Você também pode deixar GORM criar as tabelas, e em seguida, recriar as tabelas na ordem certa, e desligue o material DDL automática no GORM depois disso. Se você usar os nomes de campo e tabela que GORM escolheu, você não vai precisar adicionar os mapeamentos.

Outras dicas

Eu não estou absolutamente certo sobre isso, mas o fechamento restrições define a ordem dos campos nas vistas, talvez que reflete aos campos em tabelas.

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

static constraints = {
  firstName()
  lastName()
  address()
  email()
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top