2009-01-30 33 views
2

我使用GORM从groovy类生成我的数据库的DDL。这很棒。但是,生成的SQL中的字段顺序与该类中字段的顺序不同。例如,如果我创建类指定从GORM类生成的DDL中的字段顺序?

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中的字段?

回答

1

似乎没有要指定排序的方式,但你希望他们你总是可以创建自己的表,然后在你的领域对象提供名称映射。 您也可以让GORM创建表格,然后以正确的顺序重新创建表格,然后关闭GORM中的自动DDL材质。如果您使用GORM选择的字段和表名称,则不需要添加任何映射。

+0

谢谢约翰。这是我目前正在采取的方法。可惜的是,没有更好的方法来做到这一点。 – 2009-02-03 20:59:44

2

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

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

static constraints = { 
    firstName() 
    lastName() 
    address() 
    email() 
} 
+0

感谢您的建议!我只是测试了这一点,但不幸的是,它似乎没有改变DDL中生成字段的顺序。 – 2009-01-30 18:42:11