2009-01-30 117 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