2

我使用 GORM 从 groovy 类生成我的数据库的 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 和版本字段之后)。在这种情况下这没问题,但我有一些更广泛的表,其中按字段顺序包含重要的上下文信息。

这是我的问题:如何告诉 GORM 按照 groovy 类中的声明顺序对 SQL 中的字段进行排序?

4

2 回答 2

2

我对此并不完全确定,但约束闭包定义了视图中字段的顺序,也许这反映了表上的字段。

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

static constraints = {
  firstName()
  lastName()
  address()
  email()
}
于 2009-01-30T17:52:08.500 回答
1

似乎没有指定顺序的方法,但您始终可以根据需要创建自己的表并在域类中提供名称映射。您也可以让 GORM 创建表,然后以正确的顺序重新创建表,然后关闭 GORM 中的自动 DDL 内容。如果您使用 GORM 选择的字段和表名称,则无需添加任何映射。

于 2009-02-03T12:47:02.637 回答